mCRL2
Loading...
Searching...
No Matches
action_formula.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//
9/// \file mcrl2/modal_formula/action_formula.h
10/// \brief Add your file description here.
11
12#ifndef MCRL2_MODAL_FORMULA_ACTION_FORMULA_H
13#define MCRL2_MODAL_FORMULA_ACTION_FORMULA_H
14
15#include "mcrl2/lps/multi_action.h"
16#include "mcrl2/process/untyped_multi_action.h"
17
18namespace mcrl2::action_formulas
19{
20
21//--- start generated classes ---//
22/// \\brief An action formula
24{
25 public:
26 /// \\brief Default constructor X3.
29 {}
30
31 /// \\brief Constructor Z9.
32 /// \\param term A term
33 explicit action_formula(const atermpp::aterm& term)
34 : atermpp::aterm(term)
35 {
36 assert(core::detail::check_rule_ActFrm(*this));
37 }
38
39 /// \\brief Constructor Z6.
42 {}
43
44 /// \\brief Constructor Z6.
47 {}
48
49 /// \\brief Constructor Z6.
52 {}
53
54 /// Move semantics
55 action_formula(const action_formula&) noexcept = default;
56 action_formula(action_formula&&) noexcept = default;
57 action_formula& operator=(const action_formula&) noexcept = default;
58 action_formula& operator=(action_formula&&) noexcept = default;
59};
60
61/// \\brief list of action_formulas
62using action_formula_list = atermpp::term_list<action_formula>;
63
64/// \\brief vector of action_formulas
66
67// prototypes
68inline bool is_true(const atermpp::aterm& x);
69inline bool is_false(const atermpp::aterm& x);
70inline bool is_not(const atermpp::aterm& x);
71inline bool is_and(const atermpp::aterm& x);
72inline bool is_or(const atermpp::aterm& x);
73inline bool is_imp(const atermpp::aterm& x);
74inline bool is_forall(const atermpp::aterm& x);
75inline bool is_exists(const atermpp::aterm& x);
76inline bool is_at(const atermpp::aterm& x);
77inline bool is_multi_action(const atermpp::aterm& x);
78
79/// \\brief Test for a action_formula expression
80/// \\param x A term
81/// \\return True if \\a x is a action_formula expression
82inline
84{
98}
99
100// prototype declaration
101std::string pp(const action_formula& x, bool precedence_aware = true);
102
103/// \\brief Outputs the object to a stream
104/// \\param out An output stream
105/// \\param x Object x
106/// \\return The output stream
107inline
109{
110 return out << action_formulas::pp(x);
111}
112
113/// \\brief swap overload
114inline void swap(action_formula& t1, action_formula& t2) noexcept
115{
116 t1.swap(t2);
117}
118
119
120/// \\brief The value true for action formulas
122{
123 public:
124 /// \\brief Default constructor X3.
127 {}
128
129 /// \\brief Constructor Z9.
130 /// \\param term A term
131 explicit true_(const atermpp::aterm& term)
132 : action_formula(term)
133 {
134 assert(core::detail::check_term_ActTrue(*this));
135 }
136
137 /// Move semantics
138 true_(const true_&) noexcept = default;
139 true_(true_&&) noexcept = default;
140 true_& operator=(const true_&) noexcept = default;
141 true_& operator=(true_&&) noexcept = default;
142};
143
144/// \\brief Test for a true expression
145/// \\param x A term
146/// \\return True if \\a x is a true expression
147inline
148bool is_true(const atermpp::aterm& x)
149{
150 return x.function() == core::detail::function_symbols::ActTrue;
151}
152
153// prototype declaration
154std::string pp(const true_& x, bool precedence_aware = true);
155
156/// \\brief Outputs the object to a stream
157/// \\param out An output stream
158/// \\param x Object x
159/// \\return The output stream
160inline
162{
163 return out << action_formulas::pp(x);
164}
165
166/// \\brief swap overload
167inline void swap(true_& t1, true_& t2) noexcept
168{
169 t1.swap(t2);
170}
171
172
173/// \\brief The value false for action formulas
175{
176 public:
177 /// \\brief Default constructor X3.
180 {}
181
182 /// \\brief Constructor Z9.
183 /// \\param term A term
184 explicit false_(const atermpp::aterm& term)
185 : action_formula(term)
186 {
187 assert(core::detail::check_term_ActFalse(*this));
188 }
189
190 /// Move semantics
191 false_(const false_&) noexcept = default;
192 false_(false_&&) noexcept = default;
193 false_& operator=(const false_&) noexcept = default;
194 false_& operator=(false_&&) noexcept = default;
195};
196
197/// \\brief Test for a false expression
198/// \\param x A term
199/// \\return True if \\a x is a false expression
200inline
201bool is_false(const atermpp::aterm& x)
202{
203 return x.function() == core::detail::function_symbols::ActFalse;
204}
205
206// prototype declaration
207std::string pp(const false_& x, bool precedence_aware = true);
208
209/// \\brief Outputs the object to a stream
210/// \\param out An output stream
211/// \\param x Object x
212/// \\return The output stream
213inline
215{
216 return out << action_formulas::pp(x);
217}
218
219/// \\brief swap overload
220inline void swap(false_& t1, false_& t2) noexcept
221{
222 t1.swap(t2);
223}
224
225
226/// \\brief The not operator for action formulas
227class not_: public action_formula
228{
229 public:
230 /// \\brief Default constructor X3.
233 {}
234
235 /// \\brief Constructor Z9.
236 /// \\param term A term
237 explicit not_(const atermpp::aterm& term)
238 : action_formula(term)
239 {
240 assert(core::detail::check_term_ActNot(*this));
241 }
242
243 /// \\brief Constructor Z14.
244 explicit not_(const action_formula& operand)
246 {}
247
248 /// Move semantics
249 not_(const not_&) noexcept = default;
250 not_(not_&&) noexcept = default;
251 not_& operator=(const not_&) noexcept = default;
252 not_& operator=(not_&&) noexcept = default;
253
254 const action_formula& operand() const
255 {
256 return atermpp::down_cast<action_formula>((*this)[0]);
257 }
258};
259
260/// \\brief The function make_not constructs a new term into a given address.
261/// \\ \param t The reference into which the new not is constructed.
262template <class... ARGUMENTS>
263inline void make_not(atermpp::aterm& t, const ARGUMENTS&... args)
264{
265 atermpp::make_term_appl(t, core::detail::function_symbol_ActNot(), args...);
266}
267
268/// \\brief Test for a not expression
269/// \\param x A term
270/// \\return True if \\a x is a not expression
271inline
272bool is_not(const atermpp::aterm& x)
273{
274 return x.function() == core::detail::function_symbols::ActNot;
275}
276
277// prototype declaration
278std::string pp(const not_& x, bool precedence_aware = true);
279
280/// \\brief Outputs the object to a stream
281/// \\param out An output stream
282/// \\param x Object x
283/// \\return The output stream
284inline
286{
287 return out << action_formulas::pp(x);
288}
289
290/// \\brief swap overload
291inline void swap(not_& t1, not_& t2) noexcept
292{
293 t1.swap(t2);
294}
295
296
297/// \\brief The and operator for action formulas
298class and_: public action_formula
299{
300 public:
301 /// \\brief Default constructor X3.
304 {}
305
306 /// \\brief Constructor Z9.
307 /// \\param term A term
308 explicit and_(const atermpp::aterm& term)
309 : action_formula(term)
310 {
311 assert(core::detail::check_term_ActAnd(*this));
312 }
313
314 /// \\brief Constructor Z14.
315 and_(const action_formula& left, const action_formula& right)
317 {}
318
319 /// Move semantics
320 and_(const and_&) noexcept = default;
321 and_(and_&&) noexcept = default;
322 and_& operator=(const and_&) noexcept = default;
323 and_& operator=(and_&&) noexcept = default;
324
325 const action_formula& left() const
326 {
327 return atermpp::down_cast<action_formula>((*this)[0]);
328 }
329
330 const action_formula& right() const
331 {
332 return atermpp::down_cast<action_formula>((*this)[1]);
333 }
334};
335
336/// \\brief The function make_and constructs a new term into a given address.
337/// \\ \param t The reference into which the new and is constructed.
338template <class... ARGUMENTS>
339inline void make_and(atermpp::aterm& t, const ARGUMENTS&... args)
340{
341 atermpp::make_term_appl(t, core::detail::function_symbol_ActAnd(), args...);
342}
343
344/// \\brief Test for a and expression
345/// \\param x A term
346/// \\return True if \\a x is a and expression
347inline
348bool is_and(const atermpp::aterm& x)
349{
350 return x.function() == core::detail::function_symbols::ActAnd;
351}
352
353// prototype declaration
354std::string pp(const and_& x, bool precedence_aware = true);
355
356/// \\brief Outputs the object to a stream
357/// \\param out An output stream
358/// \\param x Object x
359/// \\return The output stream
360inline
362{
363 return out << action_formulas::pp(x);
364}
365
366/// \\brief swap overload
367inline void swap(and_& t1, and_& t2) noexcept
368{
369 t1.swap(t2);
370}
371
372
373/// \\brief The or operator for action formulas
374class or_: public action_formula
375{
376 public:
377 /// \\brief Default constructor X3.
380 {}
381
382 /// \\brief Constructor Z9.
383 /// \\param term A term
384 explicit or_(const atermpp::aterm& term)
385 : action_formula(term)
386 {
387 assert(core::detail::check_term_ActOr(*this));
388 }
389
390 /// \\brief Constructor Z14.
391 or_(const action_formula& left, const action_formula& right)
393 {}
394
395 /// Move semantics
396 or_(const or_&) noexcept = default;
397 or_(or_&&) noexcept = default;
398 or_& operator=(const or_&) noexcept = default;
399 or_& operator=(or_&&) noexcept = default;
400
401 const action_formula& left() const
402 {
403 return atermpp::down_cast<action_formula>((*this)[0]);
404 }
405
406 const action_formula& right() const
407 {
408 return atermpp::down_cast<action_formula>((*this)[1]);
409 }
410};
411
412/// \\brief The function make_or constructs a new term into a given address.
413/// \\ \param t The reference into which the new or is constructed.
414template <class... ARGUMENTS>
415inline void make_or(atermpp::aterm& t, const ARGUMENTS&... args)
416{
417 atermpp::make_term_appl(t, core::detail::function_symbol_ActOr(), args...);
418}
419
420/// \\brief Test for a or expression
421/// \\param x A term
422/// \\return True if \\a x is a or expression
423inline
424bool is_or(const atermpp::aterm& x)
425{
426 return x.function() == core::detail::function_symbols::ActOr;
427}
428
429// prototype declaration
430std::string pp(const or_& x, bool precedence_aware = true);
431
432/// \\brief Outputs the object to a stream
433/// \\param out An output stream
434/// \\param x Object x
435/// \\return The output stream
436inline
438{
439 return out << action_formulas::pp(x);
440}
441
442/// \\brief swap overload
443inline void swap(or_& t1, or_& t2) noexcept
444{
445 t1.swap(t2);
446}
447
448
449/// \\brief The implication operator for action formulas
450class imp: public action_formula
451{
452 public:
453 /// \\brief Default constructor X3.
456 {}
457
458 /// \\brief Constructor Z9.
459 /// \\param term A term
460 explicit imp(const atermpp::aterm& term)
461 : action_formula(term)
462 {
463 assert(core::detail::check_term_ActImp(*this));
464 }
465
466 /// \\brief Constructor Z14.
467 imp(const action_formula& left, const action_formula& right)
469 {}
470
471 /// Move semantics
472 imp(const imp&) noexcept = default;
473 imp(imp&&) noexcept = default;
474 imp& operator=(const imp&) noexcept = default;
475 imp& operator=(imp&&) noexcept = default;
476
477 const action_formula& left() const
478 {
479 return atermpp::down_cast<action_formula>((*this)[0]);
480 }
481
482 const action_formula& right() const
483 {
484 return atermpp::down_cast<action_formula>((*this)[1]);
485 }
486};
487
488/// \\brief The function make_imp constructs a new term into a given address.
489/// \\ \param t The reference into which the new imp is constructed.
490template <class... ARGUMENTS>
491inline void make_imp(atermpp::aterm& t, const ARGUMENTS&... args)
492{
493 atermpp::make_term_appl(t, core::detail::function_symbol_ActImp(), args...);
494}
495
496/// \\brief Test for a imp expression
497/// \\param x A term
498/// \\return True if \\a x is a imp expression
499inline
500bool is_imp(const atermpp::aterm& x)
501{
502 return x.function() == core::detail::function_symbols::ActImp;
503}
504
505// prototype declaration
506std::string pp(const imp& x, bool precedence_aware = true);
507
508/// \\brief Outputs the object to a stream
509/// \\param out An output stream
510/// \\param x Object x
511/// \\return The output stream
512inline
514{
515 return out << action_formulas::pp(x);
516}
517
518/// \\brief swap overload
519inline void swap(imp& t1, imp& t2) noexcept
520{
521 t1.swap(t2);
522}
523
524
525/// \\brief The universal quantification operator for action formulas
527{
528 public:
529 /// \\brief Default constructor X3.
532 {}
533
534 /// \\brief Constructor Z9.
535 /// \\param term A term
536 explicit forall(const atermpp::aterm& term)
537 : action_formula(term)
538 {
539 assert(core::detail::check_term_ActForall(*this));
540 }
541
542 /// \\brief Constructor Z14.
543 forall(const data::variable_list& variables, const action_formula& body)
545 {}
546
547 /// Move semantics
548 forall(const forall&) noexcept = default;
549 forall(forall&&) noexcept = default;
550 forall& operator=(const forall&) noexcept = default;
551 forall& operator=(forall&&) noexcept = default;
552
553 const data::variable_list& variables() const
554 {
555 return atermpp::down_cast<data::variable_list>((*this)[0]);
556 }
557
558 const action_formula& body() const
559 {
560 return atermpp::down_cast<action_formula>((*this)[1]);
561 }
562};
563
564/// \\brief The function make_forall constructs a new term into a given address.
565/// \\ \param t The reference into which the new forall is constructed.
566template <class... ARGUMENTS>
567inline void make_forall(atermpp::aterm& t, const ARGUMENTS&... args)
568{
569 atermpp::make_term_appl(t, core::detail::function_symbol_ActForall(), args...);
570}
571
572/// \\brief Test for a forall expression
573/// \\param x A term
574/// \\return True if \\a x is a forall expression
575inline
576bool is_forall(const atermpp::aterm& x)
577{
578 return x.function() == core::detail::function_symbols::ActForall;
579}
580
581// prototype declaration
582std::string pp(const forall& x, bool precedence_aware = true);
583
584/// \\brief Outputs the object to a stream
585/// \\param out An output stream
586/// \\param x Object x
587/// \\return The output stream
588inline
590{
591 return out << action_formulas::pp(x);
592}
593
594/// \\brief swap overload
595inline void swap(forall& t1, forall& t2) noexcept
596{
597 t1.swap(t2);
598}
599
600
601/// \\brief The existential quantification operator for action formulas
603{
604 public:
605 /// \\brief Default constructor X3.
608 {}
609
610 /// \\brief Constructor Z9.
611 /// \\param term A term
612 explicit exists(const atermpp::aterm& term)
613 : action_formula(term)
614 {
615 assert(core::detail::check_term_ActExists(*this));
616 }
617
618 /// \\brief Constructor Z14.
619 exists(const data::variable_list& variables, const action_formula& body)
621 {}
622
623 /// Move semantics
624 exists(const exists&) noexcept = default;
625 exists(exists&&) noexcept = default;
626 exists& operator=(const exists&) noexcept = default;
627 exists& operator=(exists&&) noexcept = default;
628
629 const data::variable_list& variables() const
630 {
631 return atermpp::down_cast<data::variable_list>((*this)[0]);
632 }
633
634 const action_formula& body() const
635 {
636 return atermpp::down_cast<action_formula>((*this)[1]);
637 }
638};
639
640/// \\brief The function make_exists constructs a new term into a given address.
641/// \\ \param t The reference into which the new exists is constructed.
642template <class... ARGUMENTS>
643inline void make_exists(atermpp::aterm& t, const ARGUMENTS&... args)
644{
645 atermpp::make_term_appl(t, core::detail::function_symbol_ActExists(), args...);
646}
647
648/// \\brief Test for a exists expression
649/// \\param x A term
650/// \\return True if \\a x is a exists expression
651inline
652bool is_exists(const atermpp::aterm& x)
653{
654 return x.function() == core::detail::function_symbols::ActExists;
655}
656
657// prototype declaration
658std::string pp(const exists& x, bool precedence_aware = true);
659
660/// \\brief Outputs the object to a stream
661/// \\param out An output stream
662/// \\param x Object x
663/// \\return The output stream
664inline
666{
667 return out << action_formulas::pp(x);
668}
669
670/// \\brief swap overload
671inline void swap(exists& t1, exists& t2) noexcept
672{
673 t1.swap(t2);
674}
675
676
677/// \\brief The at operator for action formulas
678class at: public action_formula
679{
680 public:
681 /// \\brief Default constructor X3.
684 {}
685
686 /// \\brief Constructor Z9.
687 /// \\param term A term
688 explicit at(const atermpp::aterm& term)
689 : action_formula(term)
690 {
691 assert(core::detail::check_term_ActAt(*this));
692 }
693
694 /// \\brief Constructor Z14.
695 at(const action_formula& operand, const data::data_expression& time_stamp)
697 {}
698
699 /// Move semantics
700 at(const at&) noexcept = default;
701 at(at&&) noexcept = default;
702 at& operator=(const at&) noexcept = default;
703 at& operator=(at&&) noexcept = default;
704
705 const action_formula& operand() const
706 {
707 return atermpp::down_cast<action_formula>((*this)[0]);
708 }
709
711 {
712 return atermpp::down_cast<data::data_expression>((*this)[1]);
713 }
714};
715
716/// \\brief The function make_at constructs a new term into a given address.
717/// \\ \param t The reference into which the new at is constructed.
718template <class... ARGUMENTS>
719inline void make_at(atermpp::aterm& t, const ARGUMENTS&... args)
720{
721 atermpp::make_term_appl(t, core::detail::function_symbol_ActAt(), args...);
722}
723
724/// \\brief Test for a at expression
725/// \\param x A term
726/// \\return True if \\a x is a at expression
727inline
728bool is_at(const atermpp::aterm& x)
729{
730 return x.function() == core::detail::function_symbols::ActAt;
731}
732
733// prototype declaration
734std::string pp(const at& x, bool precedence_aware = true);
735
736/// \\brief Outputs the object to a stream
737/// \\param out An output stream
738/// \\param x Object x
739/// \\return The output stream
740inline
742{
743 return out << action_formulas::pp(x);
744}
745
746/// \\brief swap overload
747inline void swap(at& t1, at& t2) noexcept
748{
749 t1.swap(t2);
750}
751
752
753/// \\brief The multi action for action formulas
755{
756 public:
757 /// \\brief Default constructor X3.
760 {}
761
762 /// \\brief Constructor Z9.
763 /// \\param term A term
764 explicit multi_action(const atermpp::aterm& term)
765 : action_formula(term)
766 {
767 assert(core::detail::check_term_ActMultAct(*this));
768 }
769
770 /// \\brief Constructor Z14.
771 explicit multi_action(const process::action_list& actions)
773 {}
774
775 /// Move semantics
776 multi_action(const multi_action&) noexcept = default;
777 multi_action(multi_action&&) noexcept = default;
778 multi_action& operator=(const multi_action&) noexcept = default;
779 multi_action& operator=(multi_action&&) noexcept = default;
780
781 const process::action_list& actions() const
782 {
783 return atermpp::down_cast<process::action_list>((*this)[0]);
784 }
785};
786
787/// \\brief The function make_multi_action constructs a new term into a given address.
788/// \\ \param t The reference into which the new multi_action is constructed.
789template <class... ARGUMENTS>
790inline void make_multi_action(atermpp::aterm& t, const ARGUMENTS&... args)
791{
792 atermpp::make_term_appl(t, core::detail::function_symbol_ActMultAct(), args...);
793}
794
795/// \\brief Test for a multi_action expression
796/// \\param x A term
797/// \\return True if \\a x is a multi_action expression
798inline
800{
801 return x.function() == core::detail::function_symbols::ActMultAct;
802}
803
804// prototype declaration
805std::string pp(const multi_action& x, bool precedence_aware = true);
806
807/// \\brief Outputs the object to a stream
808/// \\param out An output stream
809/// \\param x Object x
810/// \\return The output stream
811inline
813{
814 return out << action_formulas::pp(x);
815}
816
817/// \\brief swap overload
818inline void swap(multi_action& t1, multi_action& t2) noexcept
819{
820 t1.swap(t2);
821}
822//--- end generated classes ---//
823
824// template function overloads
826
827} // namespace mcrl2::action_formulas
828
829#endif // MCRL2_MODAL_FORMULA_ACTION_FORMULA_H
aterm(const aterm &other) noexcept=default
This class has user-declared copy constructor so declare default copy and move operators.
A list of aterm objects.
Definition aterm_list.h:26
A unordered_map class in which aterms can be stored.
action_formula(action_formula &&) noexcept=default
action_formula & operator=(const action_formula &) noexcept=default
action_formula(const atermpp::aterm &term)
action_formula(const data::data_expression &x)
\brief Constructor Z6.
action_formula(const action_formula &) noexcept=default
Move semantics.
action_formula & operator=(action_formula &&) noexcept=default
action_formula(const data::untyped_data_parameter &x)
\brief Constructor Z6.
action_formula()
\brief Default constructor X3.
action_formula(const process::untyped_multi_action &x)
\brief Constructor Z6.
\brief The and operator for action formulas
and_ & operator=(const and_ &) noexcept=default
and_ & operator=(and_ &&) noexcept=default
and_(const action_formula &left, const action_formula &right)
\brief Constructor Z14.
and_()
\brief Default constructor X3.
and_(and_ &&) noexcept=default
const action_formula & left() const
and_(const atermpp::aterm &term)
and_(const and_ &) noexcept=default
Move semantics.
const action_formula & right() const
\brief The at operator for action formulas
at(const atermpp::aterm &term)
const data::data_expression & time_stamp() const
at & operator=(at &&) noexcept=default
const action_formula & operand() const
at(const at &) noexcept=default
Move semantics.
at(at &&) noexcept=default
at()
\brief Default constructor X3.
at & operator=(const at &) noexcept=default
at(const action_formula &operand, const data::data_expression &time_stamp)
\brief Constructor Z14.
\brief The existential quantification operator for action formulas
exists(const atermpp::aterm &term)
exists & operator=(exists &&) noexcept=default
exists(exists &&) noexcept=default
exists(const exists &) noexcept=default
Move semantics.
exists()
\brief Default constructor X3.
const data::variable_list & variables() const
exists & operator=(const exists &) noexcept=default
const action_formula & body() const
exists(const data::variable_list &variables, const action_formula &body)
\brief Constructor Z14.
\brief The value false for action formulas
false_(const atermpp::aterm &term)
false_()
\brief Default constructor X3.
false_(false_ &&) noexcept=default
false_(const false_ &) noexcept=default
Move semantics.
false_ & operator=(const false_ &) noexcept=default
false_ & operator=(false_ &&) noexcept=default
\brief The universal quantification operator for action formulas
forall & operator=(const forall &) noexcept=default
const action_formula & body() const
forall & operator=(forall &&) noexcept=default
forall(const atermpp::aterm &term)
const data::variable_list & variables() const
forall()
\brief Default constructor X3.
forall(const data::variable_list &variables, const action_formula &body)
\brief Constructor Z14.
forall(const forall &) noexcept=default
Move semantics.
forall(forall &&) noexcept=default
\brief The implication operator for action formulas
const action_formula & left() const
imp(const imp &) noexcept=default
Move semantics.
imp(imp &&) noexcept=default
imp & operator=(imp &&) noexcept=default
imp(const action_formula &left, const action_formula &right)
\brief Constructor Z14.
imp()
\brief Default constructor X3.
imp & operator=(const imp &) noexcept=default
imp(const atermpp::aterm &term)
const action_formula & right() const
\brief The multi action for action formulas
multi_action(const multi_action &) noexcept=default
Move semantics.
multi_action(multi_action &&) noexcept=default
multi_action(const process::action_list &actions)
\brief Constructor Z14.
multi_action(const atermpp::aterm &term)
multi_action & operator=(const multi_action &) noexcept=default
multi_action()
\brief Default constructor X3.
const process::action_list & actions() const
multi_action & operator=(multi_action &&) noexcept=default
\brief The not operator for action formulas
not_(const action_formula &operand)
\brief Constructor Z14.
not_()
\brief Default constructor X3.
const action_formula & operand() const
not_(const atermpp::aterm &term)
not_(not_ &&) noexcept=default
not_(const not_ &) noexcept=default
Move semantics.
not_ & operator=(const not_ &) noexcept=default
not_ & operator=(not_ &&) noexcept=default
\brief The or operator for action formulas
or_ & operator=(const or_ &) noexcept=default
or_(or_ &&) noexcept=default
or_()
\brief Default constructor X3.
or_ & operator=(or_ &&) noexcept=default
or_(const action_formula &left, const action_formula &right)
\brief Constructor Z14.
or_(const atermpp::aterm &term)
or_(const or_ &) noexcept=default
Move semantics.
const action_formula & right() const
const action_formula & left() const
\brief The value true for action formulas
true_(true_ &&) noexcept=default
true_ & operator=(const true_ &) noexcept=default
true_()
\brief Default constructor X3.
true_(const true_ &) noexcept=default
Move semantics.
true_(const atermpp::aterm &term)
true_ & operator=(true_ &&) noexcept=default
\brief A timed multi-action
const process::action_list & actions() const
mcrl2::state_formulas::state_formula conjunction(std::set< mcrl2::state_formulas::state_formula > terms) const
conjunction Creates a conjunction of state formulas
regular_formulas::regular_formula create_regular_formula(const mcrl2::lts::action_label_string &a) const
create_regular_formula Creates a regular formula that represents action a
regular_formulas::regular_formula create_regular_formula(const mcrl2::lps::multi_action &a) const
create_regular_formula Creates a regular formula that represents action a
std::vector< bool > block_is_in_to_be_processed
std::map< block_index_type, block_index_type > right_child
std::vector< block_index_type > BL
bool in_same_class(const std::size_t s, const std::size_t t) const
Returns whether two states are in the same bisimulation equivalence class.
mcrl2::state_formulas::state_formula until_formula(const mcrl2::state_formulas::state_formula &phi1, const label_type &a, const mcrl2::state_formulas::state_formula &phi2)
until_formula Creates a state formula that corresponds to the until operator phi1phi2 from HMLU
std::size_t get_eq_class(const std::size_t s) const
Gives the bisimulation equivalence class number of a state.
bisim_partitioner(LTS_TYPE &l, const bool branching=false, const bool preserve_divergence=false, const bool generate_counter_examples=false)
Creates a bisimulation partitioner for an LTS.
~bisim_partitioner()=default
Destroys this partitioner.
std::map< block_index_type, label_type > split_by_action
std::size_t num_eq_classes() const
Gives the number of bisimulation equivalence classes of the LTS.
mcrl2::state_formulas::state_formula counter_formula(std::size_t s, std::size_t t)
Creates a state formula that distinguishes state s from state t.
void order_recursively_on_tau_reachability(const state_type s, std::map< state_type, std::vector< state_type > > &inert_transition_map, std::vector< non_bottom_state > &new_non_bottom_states, std::set< state_type > &visited)
std::vector< block_index_type > to_be_processed
std::map< block_index_type, block_index_type > split_by_block
void replace_transition_system(const bool branching, const bool preserve_divergences)
Replaces the transition relation of the current lts by the transitions of the bisimulation reduced tr...
void order_on_tau_reachability(std::vector< non_bottom_state > &non_bottom_states)
void split_the_blocks_in_BL(bool &partition_is_unstable, const label_type splitter_label, const block_index_type splitter_block)
void refine_partition_until_it_becomes_stable(const bool branching, const bool preserve_divergence)
void create_initial_partition(const bool branching, const bool preserve_divergences)
std::vector< state_type > block_index_of_a_state
mcrl2::state_formulas::state_formula counter_formula_aux(const block_index_type B1, const block_index_type B2)
void check_internal_consistency_of_the_partitioning_data_structure(const bool branching, const bool preserve_divergence) const
outgoing_transitions_per_state_action_t outgoing_transitions
function object to compare two constln_t pointers based on their contents
A class that can be used to store counterexample trees and.
A class that contains a labelled transition system.
Class for computing the signature for strong bisimulation.
Definition sigref.h:74
Class for computing the signature for branching bisimulation.
Definition sigref.h:104
Class for computing the signature for divergence preserving branching bisimulation.
Definition sigref.h:183
Signature based reductions for labelled transition systems.
Definition sigref.h:349
\brief An untyped multi action or data application
\brief The alt operator for regular formulas
alt(const atermpp::aterm &term)
alt()
\brief Default constructor X3.
alt & operator=(alt &&) noexcept=default
const regular_formula & right() const
alt(const regular_formula &left, const regular_formula &right)
\brief Constructor Z14.
alt(const alt &) noexcept=default
Move semantics.
alt(alt &&) noexcept=default
alt & operator=(const alt &) noexcept=default
const regular_formula & left() const
regular_formula()
\brief Default constructor X3.
regular_formula(const action_formulas::action_formula &x)
\brief Constructor Z6.
regular_formula(const atermpp::aterm &term)
regular_formula(const regular_formula &) noexcept=default
Move semantics.
regular_formula(const data::data_expression &x)
\brief Constructor Z6.
regular_formula & operator=(const regular_formula &) noexcept=default
regular_formula(regular_formula &&) noexcept=default
regular_formula & operator=(regular_formula &&) noexcept=default
\brief The seq operator for regular formulas
seq(const regular_formula &left, const regular_formula &right)
\brief Constructor Z14.
const regular_formula & right() const
seq & operator=(const seq &) noexcept=default
seq(const seq &) noexcept=default
Move semantics.
const regular_formula & left() const
seq(seq &&) noexcept=default
seq()
\brief Default constructor X3.
seq & operator=(seq &&) noexcept=default
seq(const atermpp::aterm &term)
\brief The 'trans or nil' operator for regular formulas
trans_or_nil & operator=(trans_or_nil &&) noexcept=default
trans_or_nil & operator=(const trans_or_nil &) noexcept=default
trans_or_nil(const trans_or_nil &) noexcept=default
Move semantics.
trans_or_nil(const regular_formula &operand)
\brief Constructor Z14.
trans_or_nil()
\brief Default constructor X3.
trans_or_nil(trans_or_nil &&) noexcept=default
trans_or_nil(const atermpp::aterm &term)
const regular_formula & operand() const
\brief The trans operator for regular formulas
trans(const atermpp::aterm &term)
trans(trans &&) noexcept=default
const regular_formula & operand() const
trans & operator=(const trans &) noexcept=default
trans & operator=(trans &&) noexcept=default
trans()
\brief Default constructor X3.
trans(const trans &) noexcept=default
Move semantics.
trans(const regular_formula &operand)
\brief Constructor Z14.
\brief An untyped regular formula or action formula
untyped_regular_formula()
\brief Default constructor X3.
untyped_regular_formula & operator=(untyped_regular_formula &&) noexcept=default
untyped_regular_formula & operator=(const untyped_regular_formula &) noexcept=default
untyped_regular_formula(const std::string &name, const regular_formula &left, const regular_formula &right)
\brief Constructor Z2.
untyped_regular_formula(const core::identifier_string &name, const regular_formula &left, const regular_formula &right)
\brief Constructor Z14.
const core::identifier_string & name() const
untyped_regular_formula(const untyped_regular_formula &) noexcept=default
Move semantics.
untyped_regular_formula(untyped_regular_formula &&) noexcept=default
\brief The and operator for state formulas
and_(and_ &&) noexcept=default
const state_formula & right() const
and_(const atermpp::aterm &term)
and_(const and_ &) noexcept=default
Move semantics.
and_(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
and_ & operator=(const and_ &) noexcept=default
and_()
\brief Default constructor X3.
and_ & operator=(and_ &&) noexcept=default
const state_formula & left() const
\brief The multiply operator for state formulas with values
const_multiply_alt & operator=(const const_multiply_alt &) noexcept=default
const state_formula & left() const
const_multiply_alt(const state_formula &left, const data::data_expression &right)
\brief Constructor Z14.
const_multiply_alt(const const_multiply_alt &) noexcept=default
Move semantics.
const_multiply_alt(const_multiply_alt &&) noexcept=default
const data::data_expression & right() const
const_multiply_alt(const atermpp::aterm &term)
const_multiply_alt & operator=(const_multiply_alt &&) noexcept=default
const_multiply_alt()
\brief Default constructor X3.
\brief The multiply operator for state formulas with values
const data::data_expression & left() const
const_multiply(const const_multiply &) noexcept=default
Move semantics.
const_multiply(const data::data_expression &left, const state_formula &right)
\brief Constructor Z14.
const_multiply()
\brief Default constructor X3.
const_multiply(const_multiply &&) noexcept=default
const_multiply & operator=(const const_multiply &) noexcept=default
const_multiply & operator=(const_multiply &&) noexcept=default
const_multiply(const atermpp::aterm &term)
const state_formula & right() const
\brief The timed delay operator for state formulas
delay_timed(const atermpp::aterm &term)
delay_timed()
\brief Default constructor X3.
delay_timed & operator=(const delay_timed &) noexcept=default
const data::data_expression & time_stamp() const
delay_timed(const data::data_expression &time_stamp)
\brief Constructor Z14.
delay_timed(const delay_timed &) noexcept=default
Move semantics.
delay_timed(delay_timed &&) noexcept=default
delay_timed & operator=(delay_timed &&) noexcept=default
\brief The delay operator for state formulas
delay & operator=(delay &&) noexcept=default
delay()
\brief Default constructor X3.
delay(const delay &) noexcept=default
Move semantics.
delay(delay &&) noexcept=default
delay(const atermpp::aterm &term)
delay & operator=(const delay &) noexcept=default
\brief The existential quantification operator for state formulas
exists(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
const state_formula & body() const
exists(const exists &) noexcept=default
Move semantics.
exists(exists &&) noexcept=default
exists & operator=(const exists &) noexcept=default
exists & operator=(exists &&) noexcept=default
exists()
\brief Default constructor X3.
exists(const atermpp::aterm &term)
const data::variable_list & variables() const
\brief The value false for state formulas
false_(false_ &&) noexcept=default
false_ & operator=(const false_ &) noexcept=default
false_ & operator=(false_ &&) noexcept=default
false_(const atermpp::aterm &term)
false_(const false_ &) noexcept=default
Move semantics.
false_()
\brief Default constructor X3.
\brief The universal quantification operator for state formulas
const state_formula & body() const
forall(const atermpp::aterm &term)
const data::variable_list & variables() const
forall & operator=(const forall &) noexcept=default
forall & operator=(forall &&) noexcept=default
forall(const forall &) noexcept=default
Move semantics.
forall(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
forall(forall &&) noexcept=default
forall()
\brief Default constructor X3.
\brief The implication operator for state formulas
imp()
\brief Default constructor X3.
imp(imp &&) noexcept=default
imp(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
imp & operator=(const imp &) noexcept=default
const state_formula & left() const
const state_formula & right() const
imp(const atermpp::aterm &term)
imp(const imp &) noexcept=default
Move semantics.
imp & operator=(imp &&) noexcept=default
\brief The infimum over a data type for state formulas
infimum(const infimum &) noexcept=default
Move semantics.
infimum()
\brief Default constructor X3.
infimum(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
infimum & operator=(infimum &&) noexcept=default
const data::variable_list & variables() const
const state_formula & body() const
infimum(const atermpp::aterm &term)
infimum(infimum &&) noexcept=default
infimum & operator=(const infimum &) noexcept=default
\brief The may operator for state formulas
const state_formula & operand() const
may()
\brief Default constructor X3.
const regular_formulas::regular_formula & formula() const
may & operator=(const may &) noexcept=default
may & operator=(may &&) noexcept=default
may(const regular_formulas::regular_formula &formula, const state_formula &operand)
\brief Constructor Z14.
may(may &&) noexcept=default
may(const atermpp::aterm &term)
may(const may &) noexcept=default
Move semantics.
\brief The minus operator for state formulas
minus & operator=(minus &&) noexcept=default
minus(minus &&) noexcept=default
minus(const minus &) noexcept=default
Move semantics.
minus(const atermpp::aterm &term)
minus(const state_formula &operand)
\brief Constructor Z14.
const state_formula & operand() const
minus & operator=(const minus &) noexcept=default
minus()
\brief Default constructor X3.
\brief The mu operator for state formulas
const core::identifier_string & name() const
const data::assignment_list & assignments() const
mu(const mu &) noexcept=default
Move semantics.
mu(const std::string &name, const data::assignment_list &assignments, const state_formula &operand)
\brief Constructor Z2.
mu(const core::identifier_string &name, const data::assignment_list &assignments, const state_formula &operand)
\brief Constructor Z14.
mu & operator=(const mu &) noexcept=default
mu(mu &&) noexcept=default
mu & operator=(mu &&) noexcept=default
mu(const atermpp::aterm &term)
mu()
\brief Default constructor X3.
const state_formula & operand() const
\brief The must operator for state formulas
must(must &&) noexcept=default
must & operator=(must &&) noexcept=default
must(const atermpp::aterm &term)
must(const regular_formulas::regular_formula &formula, const state_formula &operand)
\brief Constructor Z14.
const regular_formulas::regular_formula & formula() const
must(const must &) noexcept=default
Move semantics.
const state_formula & operand() const
must()
\brief Default constructor X3.
must & operator=(const must &) noexcept=default
\brief The not operator for state formulas
not_(not_ &&) noexcept=default
not_(const not_ &) noexcept=default
Move semantics.
not_ & operator=(const not_ &) noexcept=default
not_ & operator=(not_ &&) noexcept=default
not_()
\brief Default constructor X3.
not_(const atermpp::aterm &term)
const state_formula & operand() const
not_(const state_formula &operand)
\brief Constructor Z14.
\brief The nu operator for state formulas
nu(const atermpp::aterm &term)
nu(nu &&) noexcept=default
nu(const core::identifier_string &name, const data::assignment_list &assignments, const state_formula &operand)
\brief Constructor Z14.
nu()
\brief Default constructor X3.
nu & operator=(const nu &) noexcept=default
nu & operator=(nu &&) noexcept=default
const core::identifier_string & name() const
nu(const std::string &name, const data::assignment_list &assignments, const state_formula &operand)
\brief Constructor Z2.
const state_formula & operand() const
nu(const nu &) noexcept=default
Move semantics.
const data::assignment_list & assignments() const
\brief The or operator for state formulas
or_(or_ &&) noexcept=default
or_()
\brief Default constructor X3.
or_(const or_ &) noexcept=default
Move semantics.
or_(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
or_ & operator=(const or_ &) noexcept=default
const state_formula & right() const
or_ & operator=(or_ &&) noexcept=default
or_(const atermpp::aterm &term)
const state_formula & left() const
\brief The plus operator for state formulas with values
plus & operator=(plus &&) noexcept=default
plus & operator=(const plus &) noexcept=default
plus(const plus &) noexcept=default
Move semantics.
const state_formula & left() const
plus(const atermpp::aterm &term)
plus()
\brief Default constructor X3.
const state_formula & right() const
plus(plus &&) noexcept=default
plus(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
state_formula(const state_formula &) noexcept=default
Move semantics.
state_formula()
\brief Default constructor X3.
state_formula(state_formula &&) noexcept=default
bool has_time() const
Returns true if the formula is timed.
state_formula(const data::untyped_data_parameter &x)
\brief Constructor Z6.
state_formula & operator=(state_formula &&) noexcept=default
state_formula(const data::data_expression &x)
\brief Constructor Z6.
state_formula(const atermpp::aterm &term)
state_formula & operator=(const state_formula &) noexcept=default
\brief The sum over a data type for state formulas
sum(const sum &) noexcept=default
Move semantics.
sum(sum &&) noexcept=default
sum(const atermpp::aterm &term)
sum(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
sum & operator=(sum &&) noexcept=default
sum()
\brief Default constructor X3.
const data::variable_list & variables() const
const state_formula & body() const
sum & operator=(const sum &) noexcept=default
\brief The supremum over a data type for state formulas
supremum & operator=(supremum &&) noexcept=default
supremum(supremum &&) noexcept=default
supremum(const atermpp::aterm &term)
supremum()
\brief Default constructor X3.
supremum(const supremum &) noexcept=default
Move semantics.
supremum & operator=(const supremum &) noexcept=default
const state_formula & body() const
const data::variable_list & variables() const
supremum(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
\brief The value true for state formulas
true_()
\brief Default constructor X3.
true_ & operator=(const true_ &) noexcept=default
true_(true_ &&) noexcept=default
true_(const true_ &) noexcept=default
Move semantics.
true_(const atermpp::aterm &term)
true_ & operator=(true_ &&) noexcept=default
\brief The state formula variable
variable & operator=(const variable &) noexcept=default
variable(const core::identifier_string &name, const data::data_expression_list &arguments)
\brief Constructor Z14.
variable(const variable &) noexcept=default
Move semantics.
variable(const std::string &name, const data::data_expression_list &arguments)
\brief Constructor Z2.
variable()
\brief Default constructor X3.
variable & operator=(variable &&) noexcept=default
const core::identifier_string & name() const
const data::data_expression_list & arguments() const
variable(variable &&) noexcept=default
variable(const atermpp::aterm &term)
\brief The timed yaled operator for state formulas
yaled_timed(yaled_timed &&) noexcept=default
yaled_timed & operator=(const yaled_timed &) noexcept=default
yaled_timed()
\brief Default constructor X3.
yaled_timed & operator=(yaled_timed &&) noexcept=default
yaled_timed(const yaled_timed &) noexcept=default
Move semantics.
yaled_timed(const data::data_expression &time_stamp)
\brief Constructor Z14.
yaled_timed(const atermpp::aterm &term)
const data::data_expression & time_stamp() const
\brief The yaled operator for state formulas
yaled()
\brief Default constructor X3.
yaled(const atermpp::aterm &term)
yaled & operator=(const yaled &) noexcept=default
yaled(const yaled &) noexcept=default
Move semantics.
yaled(yaled &&) noexcept=default
yaled & operator=(yaled &&) noexcept=default
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
Definition logger.h:392
void make_exists(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(or_ &t1, or_ &t2) noexcept
\brief swap overload
std::string pp(const action_formulas::exists &x, bool arg0)
bool is_at(const atermpp::aterm &x)
void swap(forall &t1, forall &t2) noexcept
\brief swap overload
std::string pp(const action_formulas::imp &x, bool arg0)
void make_and(atermpp::aterm &t, const ARGUMENTS &... args)
std::ostream & operator<<(std::ostream &out, const or_ &x)
std::string pp(const action_formulas::at &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const action_formula &x)
std::string pp(const action_formulas::forall &x, bool arg0)
std::string pp(const action_formulas::or_ &x, bool arg0)
std::string pp(const action_formulas::action_formula &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const true_ &x)
std::ostream & operator<<(std::ostream &out, const exists &x)
std::ostream & operator<<(std::ostream &out, const at &x)
std::string pp(const action_formulas::true_ &x, bool arg0)
std::set< data::variable > find_all_variables(const action_formulas::action_formula &x)
bool is_or(const atermpp::aterm &x)
void swap(action_formula &t1, action_formula &t2) noexcept
\brief swap overload
bool is_true(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
void swap(not_ &t1, not_ &t2) noexcept
\brief swap overload
std::string pp(const action_formulas::not_ &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const and_ &x)
void make_or(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(true_ &t1, true_ &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const false_ &x)
bool is_false(const atermpp::aterm &x)
bool is_not(const atermpp::aterm &x)
void swap(false_ &t1, false_ &t2) noexcept
\brief swap overload
void swap(and_ &t1, and_ &t2) noexcept
\brief swap overload
void make_imp(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_imp(const atermpp::aterm &x)
bool is_and(const atermpp::aterm &x)
void make_forall(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(multi_action &t1, multi_action &t2) noexcept
\brief swap overload
void swap(imp &t1, imp &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const forall &x)
void swap(exists &t1, exists &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const imp &x)
std::ostream & operator<<(std::ostream &out, const multi_action &x)
void make_multi_action(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_multi_action(const atermpp::aterm &x)
void make_not(atermpp::aterm &t, const ARGUMENTS &... args)
std::ostream & operator<<(std::ostream &out, const not_ &x)
std::string pp(const action_formulas::multi_action &x, bool arg0)
void swap(at &t1, at &t2) noexcept
\brief swap overload
void make_at(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const action_formulas::false_ &x, bool arg0)
bool is_exists(const atermpp::aterm &x)
std::string pp(const action_formulas::and_ &x, bool arg0)
bool is_action_formula(const atermpp::aterm &x)
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
bool is_untyped_data_parameter(const atermpp::aterm &x)
The main namespace for the LPS library.
Definition constelm.h:18
bool bisimulation_compare(const LTS_TYPE &l1, const LTS_TYPE &l2, bool branching=false, bool preserve_divergences=false, bool generate_counter_examples=false, const std::string &counter_example_file="", bool structured_output=false)
Checks whether the two initial states of two lts's are strong or branching bisimilar.
lts_type guess_format(std::string const &s, const bool be_verbose)
Determines the LTS format from a filename by its extension.
Definition liblts.cpp:26
static const std::array< std::string, 5 > extension_strings
Definition liblts.cpp:73
std::string supported_lts_formats_text(lts_type default_format, const std::set< lts_type > &supported)
Gives a textual list describing supported LTS formats.
Definition liblts.cpp:152
std::string supported_lts_formats_text(const std::set< lts_type > &supported)
Gives a textual list describing supported LTS formats.
Definition liblts.cpp:185
std::string string_for_type(const lts_type type)
Gives a string representation of an LTS format.
Definition liblts.cpp:112
std::string mime_type_for_type(const lts_type type)
Gives the MIME type associated with an LTS format.
Definition liblts.cpp:122
void get_trans(const outgoing_transitions_per_state_t &begin, tree_set_store &tss, std::ptrdiff_t d, std::vector< transition > &d_trans, LTS_TYPE &aut)
lts_type parse_format(std::string const &s)
Determines the LTS format from a format specification string.
Definition liblts.cpp:91
static const std::array< std::string, 5 > type_strings
Definition liblts.cpp:71
std::string extension_for_type(const lts_type type)
Gives the filename extension associated with an LTS format.
Definition liblts.cpp:117
const std::set< lts_type > & supported_lts_formats()
Gives the set of all supported LTS formats.
Definition liblts.cpp:139
std::string lts_extensions_as_string(const std::set< lts_type > &supported)
Gives a list of extensions for supported LTS formats.
Definition liblts.cpp:221
std::string lts_extensions_as_string(const std::string &sep, const std::set< lts_type > &supported)
Gives a list of extensions for supported LTS formats.
Definition liblts.cpp:190
bool destructive_bisimulation_compare(LTS_TYPE &l1, LTS_TYPE &l2, bool branching=false, bool preserve_divergences=false, bool generate_counter_examples=false, const std::string &counter_example_file="", bool structured_output=false)
Checks whether the two initial states of two lts's are strong or branching bisimilar.
void bisimulation_reduce(LTS_TYPE &l, bool branching=false, bool preserve_divergences=false)
Reduce transition system l with respect to strong or (divergence preserving) branching bisimulation.
bool lts_named_cmp(const std::array< std::string, Size > &N, T a, T b)
Definition liblts.cpp:147
static const std::array< std::string, 5 > type_desc_strings
Definition liblts.cpp:75
static const std::array< std::string, 5 > mime_type_strings
Definition liblts.cpp:84
static const std::set< lts_type > & initialise_supported_lts_formats()
Definition liblts.cpp:127
bool is_deterministic(const LTS_TYPE &l)
Checks whether this LTS is deterministic.
void determinise(LTS_TYPE &l)
Determinises this LTS.
void reduce(LTS_TYPE &l, lts_equivalence eq)
Applies a reduction algorithm to this LTS.
bool compare(const LTS_TYPE &l1, const LTS_TYPE &l2, lts_equivalence eq, bool generate_counter_examples=false, const std::string &counter_example_file="", bool structured_output=false)
Checks whether this LTS is equivalent to another LTS.
bool destructive_compare(LTS_TYPE &l1, LTS_TYPE &l2, const lts_equivalence eq, const bool generate_counter_examples=false, const std::string &counter_example_file=std::string(), const bool structured_output=false)
Checks whether this LTS is equivalent to another LTS.
bool destructive_compare(LTS_TYPE &l1, LTS_TYPE &l2, lts_preorder pre, bool generate_counter_example, const std::string &counter_example_file="", bool structured_output=false, lps::exploration_strategy strategy=lps::es_breadth, bool preprocess=true)
Checks whether this LTS is smaller than another LTS according to a preorder.
void merge(LTS_TYPE &l1, const LTS_TYPE &l2)
Merge the second lts into the first lts.
bool reachability_check(lts< SL, AL, BASE > &l, bool remove_unreachable=false)
Checks whether all states in this LTS are reachable from the initial state and remove unreachable sta...
bool reachability_check(probabilistic_lts< SL, AL, PROBABILISTIC_STATE, BASE > &l, bool remove_unreachable=false)
Checks whether all states in a probabilistic LTS are reachable from the initial state and remove unre...
bool compare(const LTS_TYPE &l1, const LTS_TYPE &l2, lts_preorder pre, bool generate_counter_example, const std::string &counter_example_file="", bool structured_output=false, lps::exploration_strategy strategy=lps::es_breadth, bool preprocess=true)
Checks whether this LTS is smaller than another LTS according to a preorder.
The main namespace for the Process library.
bool is_untyped_multi_action(const atermpp::aterm &x)
void swap(trans &t1, trans &t2) noexcept
\brief swap overload
bool is_alt(const atermpp::aterm &x)
bool is_untyped_regular_formula(const atermpp::aterm &x)
void make_trans(atermpp::aterm &t, const ARGUMENTS &... args)
std::ostream & operator<<(std::ostream &out, const regular_formula &x)
void make_seq(atermpp::aterm &t, const ARGUMENTS &... args)
void make_trans_or_nil(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_trans(const atermpp::aterm &x)
std::string pp(const regular_formulas::trans &x, bool arg0)
void make_alt(atermpp::aterm &t, const ARGUMENTS &... args)
void make_untyped_regular_formula(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const regular_formulas::alt &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const trans &x)
void swap(untyped_regular_formula &t1, untyped_regular_formula &t2) noexcept
\brief swap overload
bool is_trans_or_nil(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const untyped_regular_formula &x)
bool is_regular_formula(const atermpp::aterm &x)
void swap(trans_or_nil &t1, trans_or_nil &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const trans_or_nil &x)
bool is_seq(const atermpp::aterm &x)
std::string pp(const regular_formulas::untyped_regular_formula &x, bool arg0)
std::string pp(const regular_formulas::seq &x, bool arg0)
std::string pp(const regular_formulas::trans_or_nil &x, bool arg0)
void swap(seq &t1, seq &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const seq &x)
void swap(regular_formula &t1, regular_formula &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const alt &x)
std::string pp(const regular_formulas::regular_formula &x, bool arg0)
void swap(alt &t1, alt &t2) noexcept
\brief swap overload
bool is_timed(const state_formula &x)
void swap(variable &t1, variable &t2) noexcept
\brief swap overload
bool is_infimum(const atermpp::aterm &x)
std::string pp(const state_formulas::nu &x, bool arg0)
std::string pp(const state_formulas::exists &x, bool arg0)
std::string pp(const state_formulas::not_ &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const not_ &x)
bool is_and(const atermpp::aterm &x)
void swap(minus &t1, minus &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const sum &x)
std::string pp(const state_formulas::supremum &x, bool arg0)
bool is_delay_timed(const atermpp::aterm &x)
void swap(exists &t1, exists &t2) noexcept
\brief swap overload
bool is_const_multiply(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const exists &x)
std::string pp(const state_formulas::must &x, bool arg0)
void swap(const_multiply_alt &t1, const_multiply_alt &t2) noexcept
\brief swap overload
void make_or(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_minus(const atermpp::aterm &x)
void make_imp(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_exists(const atermpp::aterm &x)
void swap(may &t1, may &t2) noexcept
\brief swap overload
void swap(mu &t1, mu &t2) noexcept
\brief swap overload
bool is_not(const atermpp::aterm &x)
std::string pp(const state_formulas::minus &x, bool arg0)
bool is_state_formula(const atermpp::aterm &x)
void swap(sum &t1, sum &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const const_multiply &x)
std::ostream & operator<<(std::ostream &out, const may &x)
void make_const_multiply(atermpp::aterm &t, const ARGUMENTS &... args)
std::ostream & operator<<(std::ostream &out, const nu &x)
void make_exists(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(supremum &t1, supremum &t2) noexcept
\brief swap overload
bool is_supremum(const atermpp::aterm &x)
void swap(true_ &t1, true_ &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const minus &x)
bool is_must(const atermpp::aterm &x)
void swap(const_multiply &t1, const_multiply &t2) noexcept
\brief swap overload
std::set< data::variable > find_all_variables(const state_formulas::state_formula &x)
std::ostream & operator<<(std::ostream &out, const imp &x)
bool is_yaled(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const mu &x)
std::ostream & operator<<(std::ostream &out, const must &x)
std::ostream & operator<<(std::ostream &out, const supremum &x)
void swap(not_ &t1, not_ &t2) noexcept
\brief swap overload
std::set< data::variable > find_free_variables(const state_formulas::state_formula &x)
void swap(state_formula &t1, state_formula &t2) noexcept
\brief swap overload
bool is_true(const atermpp::aterm &x)
std::string pp(const state_formulas::true_ &x, bool arg0)
void make_and(atermpp::aterm &t, const ARGUMENTS &... args)
std::ostream & operator<<(std::ostream &out, const true_ &x)
std::string pp(const state_formulas::state_formula &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const variable &x)
std::ostream & operator<<(std::ostream &out, const state_formula &x)
void swap(plus &t1, plus &t2) noexcept
\brief swap overload
std::string pp(const state_formulas::const_multiply &x, bool arg0)
void make_plus(atermpp::aterm &t, const ARGUMENTS &... args)
std::ostream & operator<<(std::ostream &out, const and_ &x)
std::string pp(const state_formulas::delay_timed &x, bool arg0)
void swap(yaled &t1, yaled &t2) noexcept
\brief swap overload
void swap(delay &t1, delay &t2) noexcept
\brief swap overload
bool is_variable(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const forall &x)
void make_infimum(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_may(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const yaled_timed &x)
bool is_yaled_timed(const atermpp::aterm &x)
bool is_imp(const atermpp::aterm &x)
void swap(yaled_timed &t1, yaled_timed &t2) noexcept
\brief swap overload
void make_delay_timed(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const state_formulas::imp &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const or_ &x)
std::string pp(const state_formulas::mu &x, bool arg0)
void make_const_multiply_alt(atermpp::aterm &t, const ARGUMENTS &... args)
void make_may(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_sum(const atermpp::aterm &x)
state_formulas::state_formula translate_user_notation(const state_formulas::state_formula &x)
void make_must(atermpp::aterm &t, const ARGUMENTS &... args)
state_formulas::state_formula normalize_sorts(const state_formulas::state_formula &x, const data::sort_specification &sortspec)
void swap(and_ &t1, and_ &t2) noexcept
\brief swap overload
bool is_nu(const atermpp::aterm &x)
void swap(false_ &t1, false_ &t2) noexcept
\brief swap overload
std::string pp(const state_formulas::delay &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const false_ &x)
std::string pp(const state_formulas::forall &x, bool arg0)
void swap(forall &t1, forall &t2) noexcept
\brief swap overload
std::string pp(const state_formulas::sum &x, bool arg0)
void swap(delay_timed &t1, delay_timed &t2) noexcept
\brief swap overload
void swap(infimum &t1, infimum &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const plus &x)
std::string pp(const state_formulas::yaled &x, bool arg0)
bool is_delay(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const infimum &x)
std::string pp(const state_formulas::infimum &x, bool arg0)
std::string pp(const state_formulas::or_ &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const delay &x)
std::string pp(const state_formulas::may &x, bool arg0)
bool is_false(const atermpp::aterm &x)
void make_variable(atermpp::aterm &t, const ARGUMENTS &... args)
void make_nu(atermpp::aterm &t, const ARGUMENTS &... args)
void make_supremum(atermpp::aterm &t, const ARGUMENTS &... args)
void make_sum(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(must &t1, must &t2) noexcept
\brief swap overload
bool is_plus(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const delay_timed &x)
void make_not(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(nu &t1, nu &t2) noexcept
\brief swap overload
std::string pp(const state_formulas::and_ &x, bool arg0)
void make_forall(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const state_formulas::false_ &x, bool arg0)
std::string pp(const state_formulas::const_multiply_alt &x, bool arg0)
bool is_mu(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
void make_minus(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_const_multiply_alt(const atermpp::aterm &x)
void swap(or_ &t1, or_ &t2) noexcept
\brief swap overload
std::string pp(const state_formulas::yaled_timed &x, bool arg0)
std::string pp(const state_formulas::plus &x, bool arg0)
bool is_or(const atermpp::aterm &x)
void make_yaled_timed(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const state_formulas::variable &x, bool arg0)
void swap(imp &t1, imp &t2) noexcept
\brief swap overload
std::set< data::sort_expression > find_sort_expressions(const state_formulas::state_formula &x)
bool find_nil(const state_formulas::state_formula &x)
std::ostream & operator<<(std::ostream &out, const const_multiply_alt &x)
std::set< process::action_label > find_action_labels(const state_formulas::state_formula &x)
std::ostream & operator<<(std::ostream &out, const yaled &x)
void make_mu(atermpp::aterm &t, const ARGUMENTS &... args)
std::set< core::identifier_string > find_identifiers(const state_formulas::state_formula &x)
static const atermpp::aterm StateMay
static const atermpp::aterm StateOr
static const atermpp::aterm UntypedRegFrm
static const atermpp::aterm StateFrm
static const atermpp::aterm StateYaled
static const atermpp::aterm RegAlt
static const atermpp::aterm ActNot
static const atermpp::aterm ActImp
static const atermpp::aterm ActTrue
static const atermpp::aterm StateInfimum
static const atermpp::aterm StateAnd
static const atermpp::aterm StateExists
static const atermpp::aterm RegTrans
static const atermpp::aterm ActOr
static const atermpp::aterm StateConstantMultiplyAlt
static const atermpp::aterm ActFrm
static const atermpp::aterm ActForall
static const atermpp::aterm StateYaledTimed
static const atermpp::aterm ActFalse
static const atermpp::aterm StateFalse
static const atermpp::aterm RegFrm
static const atermpp::aterm StateDelay
static const atermpp::aterm StatePlus
static const atermpp::aterm StateMinus
static const atermpp::aterm StateNu
static const atermpp::aterm ActAnd
static const atermpp::aterm StateDelayTimed
static const atermpp::aterm StateSupremum
static const atermpp::aterm StateSum
static const atermpp::aterm ActAt
static const atermpp::aterm ActExists
static const atermpp::aterm StateMu
static const atermpp::aterm RegTransOrNil
static const atermpp::aterm StateVar
static const atermpp::aterm StateImp
static const atermpp::aterm RegSeq
static const atermpp::aterm StateTrue
static const atermpp::aterm StateForall
static const atermpp::aterm StateMust
static const atermpp::aterm StateNot
static const atermpp::aterm ActMultAct
static const atermpp::aterm StateConstantMultiply
std::vector< transition > non_inert_transitions
std::vector< non_bottom_state > non_bottom_states
non_bottom_state(const state_type s, const std::vector< state_type > &it)