12#ifndef MCRL2_MODAL_FORMULA_TRAVERSER_H
13#define MCRL2_MODAL_FORMULA_TRAVERSER_H
15#include "mcrl2/lps/traverser.h"
16#include "mcrl2/modal_formula/state_formula_specification.h"
25template <
typename Derived>
35 static_cast<Derived&>(*
this).enter(x);
37 static_cast<Derived&>(*
this).leave(x);
42 static_cast<Derived&>(*
this).enter(x);
44 static_cast<Derived&>(*
this).leave(x);
49 static_cast<Derived&>(*
this).enter(x);
51 static_cast<Derived&>(*
this).leave(x);
56template <
template <
class>
class Traverser,
class Derived>
59 using super = Traverser<Derived>;
66 static_cast<Derived&>(*
this).enter(x);
68 static_cast<Derived&>(*
this).leave(x);
73 static_cast<Derived&>(*
this).enter(x);
75 static_cast<Derived&>(*
this).leave(x);
80 static_cast<Derived&>(*
this).enter(x);
81 static_cast<Derived&>(*
this).apply(x
.operand());
82 static_cast<Derived&>(*
this).leave(x);
87 static_cast<Derived&>(*
this).enter(x);
88 static_cast<Derived&>(*
this).apply(x
.left());
89 static_cast<Derived&>(*
this).apply(x
.right());
90 static_cast<Derived&>(*
this).leave(x);
95 static_cast<Derived&>(*
this).enter(x);
96 static_cast<Derived&>(*
this).apply(x
.left());
97 static_cast<Derived&>(*
this).apply(x
.right());
98 static_cast<Derived&>(*
this).leave(x);
103 static_cast<Derived&>(*
this).enter(x);
104 static_cast<Derived&>(*
this).apply(x
.left());
105 static_cast<Derived&>(*
this).apply(x
.right());
106 static_cast<Derived&>(*
this).leave(x);
111 static_cast<Derived&>(*
this).enter(x);
113 static_cast<Derived&>(*
this).apply(x
.body());
114 static_cast<Derived&>(*
this).leave(x);
119 static_cast<Derived&>(*
this).enter(x);
121 static_cast<Derived&>(*
this).apply(x
.body());
122 static_cast<Derived&>(*
this).leave(x);
127 static_cast<Derived&>(*
this).enter(x);
128 static_cast<Derived&>(*
this).apply(x
.operand());
130 static_cast<Derived&>(*
this).leave(x);
135 static_cast<Derived&>(*
this).enter(x);
136 static_cast<Derived&>(*
this).apply(x
.actions());
137 static_cast<Derived&>(*
this).leave(x);
142 static_cast<Derived&>(*
this).enter(x);
145 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
149 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
153 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::true_>(x));
157 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::false_>(x));
161 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::not_>(x));
165 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::and_>(x));
169 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::or_>(x));
173 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::imp>(x));
177 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::forall>(x));
181 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::exists>(x));
185 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::at>(x));
189 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::multi_action>(x));
193 static_cast<Derived&>(*
this).apply(atermpp::down_cast<process::untyped_multi_action>(x));
195 static_cast<Derived&>(*
this).leave(x);
201template <
typename Derived>
208template <
template <
class>
class Traverser,
class Derived>
211 using super = Traverser<Derived>;
218 static_cast<Derived&>(*
this).enter(x);
220 static_cast<Derived&>(*
this).leave(x);
225 static_cast<Derived&>(*
this).enter(x);
227 static_cast<Derived&>(*
this).leave(x);
232 static_cast<Derived&>(*
this).enter(x);
233 static_cast<Derived&>(*
this).apply(x
.operand());
234 static_cast<Derived&>(*
this).leave(x);
239 static_cast<Derived&>(*
this).enter(x);
240 static_cast<Derived&>(*
this).apply(x
.left());
241 static_cast<Derived&>(*
this).apply(x
.right());
242 static_cast<Derived&>(*
this).leave(x);
247 static_cast<Derived&>(*
this).enter(x);
248 static_cast<Derived&>(*
this).apply(x
.left());
249 static_cast<Derived&>(*
this).apply(x
.right());
250 static_cast<Derived&>(*
this).leave(x);
255 static_cast<Derived&>(*
this).enter(x);
256 static_cast<Derived&>(*
this).apply(x
.left());
257 static_cast<Derived&>(*
this).apply(x
.right());
258 static_cast<Derived&>(*
this).leave(x);
263 static_cast<Derived&>(*
this).enter(x);
264 static_cast<Derived&>(*
this).apply(x
.body());
265 static_cast<Derived&>(*
this).leave(x);
270 static_cast<Derived&>(*
this).enter(x);
271 static_cast<Derived&>(*
this).apply(x
.body());
272 static_cast<Derived&>(*
this).leave(x);
277 static_cast<Derived&>(*
this).enter(x);
278 static_cast<Derived&>(*
this).apply(x
.operand());
280 static_cast<Derived&>(*
this).leave(x);
285 static_cast<Derived&>(*
this).enter(x);
286 static_cast<Derived&>(*
this).apply(x
.actions());
287 static_cast<Derived&>(*
this).leave(x);
292 static_cast<Derived&>(*
this).enter(x);
295 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
299 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
303 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::true_>(x));
307 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::false_>(x));
311 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::not_>(x));
315 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::and_>(x));
319 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::or_>(x));
323 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::imp>(x));
327 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::forall>(x));
331 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::exists>(x));
335 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::at>(x));
339 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::multi_action>(x));
343 static_cast<Derived&>(*
this).apply(atermpp::down_cast<process::untyped_multi_action>(x));
345 static_cast<Derived&>(*
this).leave(x);
351template <
typename Derived>
358template <
template <
class>
class Traverser,
class Derived>
361 using super = Traverser<Derived>;
368 static_cast<Derived&>(*
this).enter(x);
370 static_cast<Derived&>(*
this).leave(x);
375 static_cast<Derived&>(*
this).enter(x);
377 static_cast<Derived&>(*
this).leave(x);
382 static_cast<Derived&>(*
this).enter(x);
383 static_cast<Derived&>(*
this).apply(x
.operand());
384 static_cast<Derived&>(*
this).leave(x);
389 static_cast<Derived&>(*
this).enter(x);
390 static_cast<Derived&>(*
this).apply(x
.left());
391 static_cast<Derived&>(*
this).apply(x
.right());
392 static_cast<Derived&>(*
this).leave(x);
397 static_cast<Derived&>(*
this).enter(x);
398 static_cast<Derived&>(*
this).apply(x
.left());
399 static_cast<Derived&>(*
this).apply(x
.right());
400 static_cast<Derived&>(*
this).leave(x);
405 static_cast<Derived&>(*
this).enter(x);
406 static_cast<Derived&>(*
this).apply(x
.left());
407 static_cast<Derived&>(*
this).apply(x
.right());
408 static_cast<Derived&>(*
this).leave(x);
413 static_cast<Derived&>(*
this).enter(x);
414 static_cast<Derived&>(*
this).apply(x
.body());
415 static_cast<Derived&>(*
this).leave(x);
420 static_cast<Derived&>(*
this).enter(x);
421 static_cast<Derived&>(*
this).apply(x
.body());
422 static_cast<Derived&>(*
this).leave(x);
427 static_cast<Derived&>(*
this).enter(x);
428 static_cast<Derived&>(*
this).apply(x
.operand());
429 static_cast<Derived&>(*
this).leave(x);
434 static_cast<Derived&>(*
this).enter(x);
436 static_cast<Derived&>(*
this).leave(x);
441 static_cast<Derived&>(*
this).enter(x);
444 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
448 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
452 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::true_>(x));
456 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::false_>(x));
460 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::not_>(x));
464 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::and_>(x));
468 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::or_>(x));
472 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::imp>(x));
476 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::forall>(x));
480 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::exists>(x));
484 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::at>(x));
488 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::multi_action>(x));
492 static_cast<Derived&>(*
this).apply(atermpp::down_cast<process::untyped_multi_action>(x));
494 static_cast<Derived&>(*
this).leave(x);
500template <
typename Derived>
507template <
template <
class>
class Traverser,
class Derived>
510 using super = Traverser<Derived>;
517 static_cast<Derived&>(*
this).enter(x);
519 static_cast<Derived&>(*
this).leave(x);
524 static_cast<Derived&>(*
this).enter(x);
526 static_cast<Derived&>(*
this).leave(x);
531 static_cast<Derived&>(*
this).enter(x);
532 static_cast<Derived&>(*
this).apply(x
.operand());
533 static_cast<Derived&>(*
this).leave(x);
538 static_cast<Derived&>(*
this).enter(x);
539 static_cast<Derived&>(*
this).apply(x
.left());
540 static_cast<Derived&>(*
this).apply(x
.right());
541 static_cast<Derived&>(*
this).leave(x);
546 static_cast<Derived&>(*
this).enter(x);
547 static_cast<Derived&>(*
this).apply(x
.left());
548 static_cast<Derived&>(*
this).apply(x
.right());
549 static_cast<Derived&>(*
this).leave(x);
554 static_cast<Derived&>(*
this).enter(x);
555 static_cast<Derived&>(*
this).apply(x
.left());
556 static_cast<Derived&>(*
this).apply(x
.right());
557 static_cast<Derived&>(*
this).leave(x);
562 static_cast<Derived&>(*
this).enter(x);
564 static_cast<Derived&>(*
this).apply(x
.body());
565 static_cast<Derived&>(*
this).leave(x);
570 static_cast<Derived&>(*
this).enter(x);
572 static_cast<Derived&>(*
this).apply(x
.body());
573 static_cast<Derived&>(*
this).leave(x);
578 static_cast<Derived&>(*
this).enter(x);
579 static_cast<Derived&>(*
this).apply(x
.operand());
581 static_cast<Derived&>(*
this).leave(x);
586 static_cast<Derived&>(*
this).enter(x);
587 static_cast<Derived&>(*
this).apply(x
.actions());
588 static_cast<Derived&>(*
this).leave(x);
593 static_cast<Derived&>(*
this).enter(x);
596 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
600 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
604 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::true_>(x));
608 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::false_>(x));
612 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::not_>(x));
616 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::and_>(x));
620 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::or_>(x));
624 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::imp>(x));
628 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::forall>(x));
632 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::exists>(x));
636 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::at>(x));
640 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::multi_action>(x));
644 static_cast<Derived&>(*
this).apply(atermpp::down_cast<process::untyped_multi_action>(x));
646 static_cast<Derived&>(*
this).leave(x);
652template <
typename Derived>
659template <
template <
class>
class Traverser,
class Derived>
662 using super = Traverser<Derived>;
669 static_cast<Derived&>(*
this).enter(x);
671 static_cast<Derived&>(*
this).leave(x);
676 static_cast<Derived&>(*
this).enter(x);
678 static_cast<Derived&>(*
this).leave(x);
683 static_cast<Derived&>(*
this).enter(x);
684 static_cast<Derived&>(*
this).apply(x
.operand());
685 static_cast<Derived&>(*
this).leave(x);
690 static_cast<Derived&>(*
this).enter(x);
691 static_cast<Derived&>(*
this).apply(x
.left());
692 static_cast<Derived&>(*
this).apply(x
.right());
693 static_cast<Derived&>(*
this).leave(x);
698 static_cast<Derived&>(*
this).enter(x);
699 static_cast<Derived&>(*
this).apply(x
.left());
700 static_cast<Derived&>(*
this).apply(x
.right());
701 static_cast<Derived&>(*
this).leave(x);
706 static_cast<Derived&>(*
this).enter(x);
707 static_cast<Derived&>(*
this).apply(x
.left());
708 static_cast<Derived&>(*
this).apply(x
.right());
709 static_cast<Derived&>(*
this).leave(x);
714 static_cast<Derived&>(*
this).enter(x);
716 static_cast<Derived&>(*
this).apply(x
.body());
717 static_cast<Derived&>(*
this).leave(x);
722 static_cast<Derived&>(*
this).enter(x);
724 static_cast<Derived&>(*
this).apply(x
.body());
725 static_cast<Derived&>(*
this).leave(x);
730 static_cast<Derived&>(*
this).enter(x);
731 static_cast<Derived&>(*
this).apply(x
.operand());
733 static_cast<Derived&>(*
this).leave(x);
738 static_cast<Derived&>(*
this).enter(x);
739 static_cast<Derived&>(*
this).apply(x
.actions());
740 static_cast<Derived&>(*
this).leave(x);
745 static_cast<Derived&>(*
this).enter(x);
748 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
752 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
756 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::true_>(x));
760 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::false_>(x));
764 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::not_>(x));
768 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::and_>(x));
772 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::or_>(x));
776 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::imp>(x));
780 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::forall>(x));
784 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::exists>(x));
788 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::at>(x));
792 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::multi_action>(x));
796 static_cast<Derived&>(*
this).apply(atermpp::down_cast<process::untyped_multi_action>(x));
798 static_cast<Derived&>(*
this).leave(x);
804template <
typename Derived>
811template <
template <
class>
class Traverser,
class Derived>
814 using super = Traverser<Derived>;
821 static_cast<Derived&>(*
this).enter(x);
823 static_cast<Derived&>(*
this).leave(x);
828 static_cast<Derived&>(*
this).enter(x);
830 static_cast<Derived&>(*
this).leave(x);
835 static_cast<Derived&>(*
this).enter(x);
836 static_cast<Derived&>(*
this).apply(x
.operand());
837 static_cast<Derived&>(*
this).leave(x);
842 static_cast<Derived&>(*
this).enter(x);
843 static_cast<Derived&>(*
this).apply(x
.left());
844 static_cast<Derived&>(*
this).apply(x
.right());
845 static_cast<Derived&>(*
this).leave(x);
850 static_cast<Derived&>(*
this).enter(x);
851 static_cast<Derived&>(*
this).apply(x
.left());
852 static_cast<Derived&>(*
this).apply(x
.right());
853 static_cast<Derived&>(*
this).leave(x);
858 static_cast<Derived&>(*
this).enter(x);
859 static_cast<Derived&>(*
this).apply(x
.left());
860 static_cast<Derived&>(*
this).apply(x
.right());
861 static_cast<Derived&>(*
this).leave(x);
866 static_cast<Derived&>(*
this).enter(x);
867 static_cast<Derived&>(*
this).apply(x
.body());
868 static_cast<Derived&>(*
this).leave(x);
873 static_cast<Derived&>(*
this).enter(x);
874 static_cast<Derived&>(*
this).apply(x
.body());
875 static_cast<Derived&>(*
this).leave(x);
880 static_cast<Derived&>(*
this).enter(x);
881 static_cast<Derived&>(*
this).apply(x
.operand());
882 static_cast<Derived&>(*
this).leave(x);
887 static_cast<Derived&>(*
this).enter(x);
888 static_cast<Derived&>(*
this).apply(x
.actions());
889 static_cast<Derived&>(*
this).leave(x);
894 static_cast<Derived&>(*
this).enter(x);
897 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
901 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
905 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::true_>(x));
909 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::false_>(x));
913 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::not_>(x));
917 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::and_>(x));
921 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::or_>(x));
925 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::imp>(x));
929 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::forall>(x));
933 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::exists>(x));
937 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::at>(x));
941 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::multi_action>(x));
945 static_cast<Derived&>(*
this).apply(atermpp::down_cast<process::untyped_multi_action>(x));
947 static_cast<Derived&>(*
this).leave(x);
953template <
typename Derived>
965template <
typename Derived>
975 static_cast<Derived&>(*
this).enter(x);
977 static_cast<Derived&>(*
this).leave(x);
982 static_cast<Derived&>(*
this).enter(x);
984 static_cast<Derived&>(*
this).leave(x);
989template <
template <
class>
class Traverser,
class Derived>
992 using super = Traverser<Derived>;
999 static_cast<Derived&>(*
this).enter(x);
1000 static_cast<Derived&>(*
this).apply(x
.left());
1001 static_cast<Derived&>(*
this).apply(x
.right());
1002 static_cast<Derived&>(*
this).leave(x);
1007 static_cast<Derived&>(*
this).enter(x);
1008 static_cast<Derived&>(*
this).apply(x
.left());
1009 static_cast<Derived&>(*
this).apply(x
.right());
1010 static_cast<Derived&>(*
this).leave(x);
1015 static_cast<Derived&>(*
this).enter(x);
1016 static_cast<Derived&>(*
this).apply(x
.operand());
1017 static_cast<Derived&>(*
this).leave(x);
1022 static_cast<Derived&>(*
this).enter(x);
1023 static_cast<Derived&>(*
this).apply(x
.operand());
1024 static_cast<Derived&>(*
this).leave(x);
1029 static_cast<Derived&>(*
this).enter(x);
1030 static_cast<Derived&>(*
this).apply(x
.left());
1031 static_cast<Derived&>(*
this).apply(x
.right());
1032 static_cast<Derived&>(*
this).leave(x);
1037 static_cast<Derived&>(*
this).enter(x);
1040 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1044 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::action_formula>(x));
1048 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::seq>(x));
1052 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::alt>(x));
1056 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans>(x));
1060 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1064 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1066 static_cast<Derived&>(*
this).leave(x);
1072template <
typename Derived>
1079template <
template <
class>
class Traverser,
class Derived>
1082 using super = Traverser<Derived>;
1089 static_cast<Derived&>(*
this).enter(x);
1090 static_cast<Derived&>(*
this).apply(x
.left());
1091 static_cast<Derived&>(*
this).apply(x
.right());
1092 static_cast<Derived&>(*
this).leave(x);
1097 static_cast<Derived&>(*
this).enter(x);
1098 static_cast<Derived&>(*
this).apply(x
.left());
1099 static_cast<Derived&>(*
this).apply(x
.right());
1100 static_cast<Derived&>(*
this).leave(x);
1105 static_cast<Derived&>(*
this).enter(x);
1106 static_cast<Derived&>(*
this).apply(x
.operand());
1107 static_cast<Derived&>(*
this).leave(x);
1112 static_cast<Derived&>(*
this).enter(x);
1113 static_cast<Derived&>(*
this).apply(x
.operand());
1114 static_cast<Derived&>(*
this).leave(x);
1119 static_cast<Derived&>(*
this).enter(x);
1120 static_cast<Derived&>(*
this).apply(x
.left());
1121 static_cast<Derived&>(*
this).apply(x
.right());
1122 static_cast<Derived&>(*
this).leave(x);
1127 static_cast<Derived&>(*
this).enter(x);
1130 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1134 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::action_formula>(x));
1138 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::seq>(x));
1142 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::alt>(x));
1146 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans>(x));
1150 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1154 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1156 static_cast<Derived&>(*
this).leave(x);
1162template <
typename Derived>
1169template <
template <
class>
class Traverser,
class Derived>
1172 using super = Traverser<Derived>;
1179 static_cast<Derived&>(*
this).enter(x);
1180 static_cast<Derived&>(*
this).apply(x
.left());
1181 static_cast<Derived&>(*
this).apply(x
.right());
1182 static_cast<Derived&>(*
this).leave(x);
1187 static_cast<Derived&>(*
this).enter(x);
1188 static_cast<Derived&>(*
this).apply(x
.left());
1189 static_cast<Derived&>(*
this).apply(x
.right());
1190 static_cast<Derived&>(*
this).leave(x);
1195 static_cast<Derived&>(*
this).enter(x);
1196 static_cast<Derived&>(*
this).apply(x
.operand());
1197 static_cast<Derived&>(*
this).leave(x);
1202 static_cast<Derived&>(*
this).enter(x);
1203 static_cast<Derived&>(*
this).apply(x
.operand());
1204 static_cast<Derived&>(*
this).leave(x);
1209 static_cast<Derived&>(*
this).enter(x);
1210 static_cast<Derived&>(*
this).apply(x
.left());
1211 static_cast<Derived&>(*
this).apply(x
.right());
1212 static_cast<Derived&>(*
this).leave(x);
1217 static_cast<Derived&>(*
this).enter(x);
1220 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1224 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::action_formula>(x));
1228 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::seq>(x));
1232 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::alt>(x));
1236 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans>(x));
1240 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1244 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1246 static_cast<Derived&>(*
this).leave(x);
1252template <
typename Derived>
1259template <
template <
class>
class Traverser,
class Derived>
1262 using super = Traverser<Derived>;
1269 static_cast<Derived&>(*
this).enter(x);
1270 static_cast<Derived&>(*
this).apply(x
.left());
1271 static_cast<Derived&>(*
this).apply(x
.right());
1272 static_cast<Derived&>(*
this).leave(x);
1277 static_cast<Derived&>(*
this).enter(x);
1278 static_cast<Derived&>(*
this).apply(x
.left());
1279 static_cast<Derived&>(*
this).apply(x
.right());
1280 static_cast<Derived&>(*
this).leave(x);
1285 static_cast<Derived&>(*
this).enter(x);
1286 static_cast<Derived&>(*
this).apply(x
.operand());
1287 static_cast<Derived&>(*
this).leave(x);
1292 static_cast<Derived&>(*
this).enter(x);
1293 static_cast<Derived&>(*
this).apply(x
.operand());
1294 static_cast<Derived&>(*
this).leave(x);
1299 static_cast<Derived&>(*
this).enter(x);
1300 static_cast<Derived&>(*
this).apply(x
.left());
1301 static_cast<Derived&>(*
this).apply(x
.right());
1302 static_cast<Derived&>(*
this).leave(x);
1307 static_cast<Derived&>(*
this).enter(x);
1310 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1314 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::action_formula>(x));
1318 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::seq>(x));
1322 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::alt>(x));
1326 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans>(x));
1330 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1334 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1336 static_cast<Derived&>(*
this).leave(x);
1342template <
typename Derived>
1349template <
template <
class>
class Traverser,
class Derived>
1352 using super = Traverser<Derived>;
1359 static_cast<Derived&>(*
this).enter(x);
1360 static_cast<Derived&>(*
this).apply(x
.left());
1361 static_cast<Derived&>(*
this).apply(x
.right());
1362 static_cast<Derived&>(*
this).leave(x);
1367 static_cast<Derived&>(*
this).enter(x);
1368 static_cast<Derived&>(*
this).apply(x
.left());
1369 static_cast<Derived&>(*
this).apply(x
.right());
1370 static_cast<Derived&>(*
this).leave(x);
1375 static_cast<Derived&>(*
this).enter(x);
1376 static_cast<Derived&>(*
this).apply(x
.operand());
1377 static_cast<Derived&>(*
this).leave(x);
1382 static_cast<Derived&>(*
this).enter(x);
1383 static_cast<Derived&>(*
this).apply(x
.operand());
1384 static_cast<Derived&>(*
this).leave(x);
1389 static_cast<Derived&>(*
this).enter(x);
1390 static_cast<Derived&>(*
this).apply(x
.name());
1391 static_cast<Derived&>(*
this).apply(x
.left());
1392 static_cast<Derived&>(*
this).apply(x
.right());
1393 static_cast<Derived&>(*
this).leave(x);
1398 static_cast<Derived&>(*
this).enter(x);
1401 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1405 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::action_formula>(x));
1409 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::seq>(x));
1413 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::alt>(x));
1417 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans>(x));
1421 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1425 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1427 static_cast<Derived&>(*
this).leave(x);
1433template <
typename Derived>
1440template <
template <
class>
class Traverser,
class Derived>
1443 using super = Traverser<Derived>;
1450 static_cast<Derived&>(*
this).enter(x);
1451 static_cast<Derived&>(*
this).apply(x
.left());
1452 static_cast<Derived&>(*
this).apply(x
.right());
1453 static_cast<Derived&>(*
this).leave(x);
1458 static_cast<Derived&>(*
this).enter(x);
1459 static_cast<Derived&>(*
this).apply(x
.left());
1460 static_cast<Derived&>(*
this).apply(x
.right());
1461 static_cast<Derived&>(*
this).leave(x);
1466 static_cast<Derived&>(*
this).enter(x);
1467 static_cast<Derived&>(*
this).apply(x
.operand());
1468 static_cast<Derived&>(*
this).leave(x);
1473 static_cast<Derived&>(*
this).enter(x);
1474 static_cast<Derived&>(*
this).apply(x
.operand());
1475 static_cast<Derived&>(*
this).leave(x);
1480 static_cast<Derived&>(*
this).enter(x);
1481 static_cast<Derived&>(*
this).apply(x
.left());
1482 static_cast<Derived&>(*
this).apply(x
.right());
1483 static_cast<Derived&>(*
this).leave(x);
1488 static_cast<Derived&>(*
this).enter(x);
1491 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1495 static_cast<Derived&>(*
this).apply(atermpp::down_cast<action_formulas::action_formula>(x));
1499 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::seq>(x));
1503 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::alt>(x));
1507 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans>(x));
1511 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1515 static_cast<Derived&>(*
this).apply(atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1517 static_cast<Derived&>(*
this).leave(x);
1523template <
typename Derived>
1535template <
typename Derived>
1545 static_cast<Derived&>(*
this).enter(x);
1547 static_cast<Derived&>(*
this).leave(x);
1552 static_cast<Derived&>(*
this).enter(x);
1554 static_cast<Derived&>(*
this).leave(x);
1559template <
template <
class>
class Traverser,
class Derived>
1562 using super = Traverser<Derived>;
1569 static_cast<Derived&>(*
this).enter(x);
1571 static_cast<Derived&>(*
this).leave(x);
1576 static_cast<Derived&>(*
this).enter(x);
1578 static_cast<Derived&>(*
this).leave(x);
1583 static_cast<Derived&>(*
this).enter(x);
1584 static_cast<Derived&>(*
this).apply(x
.operand());
1585 static_cast<Derived&>(*
this).leave(x);
1590 static_cast<Derived&>(*
this).enter(x);
1591 static_cast<Derived&>(*
this).apply(x
.operand());
1592 static_cast<Derived&>(*
this).leave(x);
1597 static_cast<Derived&>(*
this).enter(x);
1598 static_cast<Derived&>(*
this).apply(x
.left());
1599 static_cast<Derived&>(*
this).apply(x
.right());
1600 static_cast<Derived&>(*
this).leave(x);
1605 static_cast<Derived&>(*
this).enter(x);
1606 static_cast<Derived&>(*
this).apply(x
.left());
1607 static_cast<Derived&>(*
this).apply(x
.right());
1608 static_cast<Derived&>(*
this).leave(x);
1613 static_cast<Derived&>(*
this).enter(x);
1614 static_cast<Derived&>(*
this).apply(x
.left());
1615 static_cast<Derived&>(*
this).apply(x
.right());
1616 static_cast<Derived&>(*
this).leave(x);
1621 static_cast<Derived&>(*
this).enter(x);
1622 static_cast<Derived&>(*
this).apply(x
.left());
1623 static_cast<Derived&>(*
this).apply(x
.right());
1624 static_cast<Derived&>(*
this).leave(x);
1629 static_cast<Derived&>(*
this).enter(x);
1630 static_cast<Derived&>(*
this).apply(x
.left());
1631 static_cast<Derived&>(*
this).apply(x
.right());
1632 static_cast<Derived&>(*
this).leave(x);
1637 static_cast<Derived&>(*
this).enter(x);
1638 static_cast<Derived&>(*
this).apply(x
.left());
1639 static_cast<Derived&>(*
this).apply(x
.right());
1640 static_cast<Derived&>(*
this).leave(x);
1645 static_cast<Derived&>(*
this).enter(x);
1647 static_cast<Derived&>(*
this).apply(x
.body());
1648 static_cast<Derived&>(*
this).leave(x);
1653 static_cast<Derived&>(*
this).enter(x);
1655 static_cast<Derived&>(*
this).apply(x
.body());
1656 static_cast<Derived&>(*
this).leave(x);
1661 static_cast<Derived&>(*
this).enter(x);
1663 static_cast<Derived&>(*
this).apply(x
.body());
1664 static_cast<Derived&>(*
this).leave(x);
1669 static_cast<Derived&>(*
this).enter(x);
1671 static_cast<Derived&>(*
this).apply(x
.body());
1672 static_cast<Derived&>(*
this).leave(x);
1677 static_cast<Derived&>(*
this).enter(x);
1679 static_cast<Derived&>(*
this).apply(x
.body());
1680 static_cast<Derived&>(*
this).leave(x);
1685 static_cast<Derived&>(*
this).enter(x);
1686 static_cast<Derived&>(*
this).apply(x
.formula());
1687 static_cast<Derived&>(*
this).apply(x
.operand());
1688 static_cast<Derived&>(*
this).leave(x);
1693 static_cast<Derived&>(*
this).enter(x);
1694 static_cast<Derived&>(*
this).apply(x
.formula());
1695 static_cast<Derived&>(*
this).apply(x
.operand());
1696 static_cast<Derived&>(*
this).leave(x);
1701 static_cast<Derived&>(*
this).enter(x);
1703 static_cast<Derived&>(*
this).leave(x);
1708 static_cast<Derived&>(*
this).enter(x);
1710 static_cast<Derived&>(*
this).leave(x);
1715 static_cast<Derived&>(*
this).enter(x);
1717 static_cast<Derived&>(*
this).leave(x);
1722 static_cast<Derived&>(*
this).enter(x);
1724 static_cast<Derived&>(*
this).leave(x);
1729 static_cast<Derived&>(*
this).enter(x);
1731 static_cast<Derived&>(*
this).leave(x);
1736 static_cast<Derived&>(*
this).enter(x);
1738 static_cast<Derived&>(*
this).apply(x
.operand());
1739 static_cast<Derived&>(*
this).leave(x);
1744 static_cast<Derived&>(*
this).enter(x);
1746 static_cast<Derived&>(*
this).apply(x
.operand());
1747 static_cast<Derived&>(*
this).leave(x);
1752 static_cast<Derived&>(*
this).enter(x);
1754 static_cast<Derived&>(*
this).apply(x
.formula());
1755 static_cast<Derived&>(*
this).leave(x);
1760 static_cast<Derived&>(*
this).enter(x);
1763 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
1767 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
1771 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
1775 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
1779 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
1783 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
1787 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
1791 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
1795 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
1799 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
1803 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
1807 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
1811 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
1815 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
1819 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
1823 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
1827 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
1831 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
1835 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
1839 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
1843 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
1847 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
1851 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
1855 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
1859 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
1863 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
1865 static_cast<Derived&>(*
this).leave(x);
1871template <
typename Derived>
1878template <
template <
class>
class Traverser,
class Derived>
1881 using super = Traverser<Derived>;
1888 static_cast<Derived&>(*
this).enter(x);
1890 static_cast<Derived&>(*
this).leave(x);
1895 static_cast<Derived&>(*
this).enter(x);
1897 static_cast<Derived&>(*
this).leave(x);
1902 static_cast<Derived&>(*
this).enter(x);
1903 static_cast<Derived&>(*
this).apply(x
.operand());
1904 static_cast<Derived&>(*
this).leave(x);
1909 static_cast<Derived&>(*
this).enter(x);
1910 static_cast<Derived&>(*
this).apply(x
.operand());
1911 static_cast<Derived&>(*
this).leave(x);
1916 static_cast<Derived&>(*
this).enter(x);
1917 static_cast<Derived&>(*
this).apply(x
.left());
1918 static_cast<Derived&>(*
this).apply(x
.right());
1919 static_cast<Derived&>(*
this).leave(x);
1924 static_cast<Derived&>(*
this).enter(x);
1925 static_cast<Derived&>(*
this).apply(x
.left());
1926 static_cast<Derived&>(*
this).apply(x
.right());
1927 static_cast<Derived&>(*
this).leave(x);
1932 static_cast<Derived&>(*
this).enter(x);
1933 static_cast<Derived&>(*
this).apply(x
.left());
1934 static_cast<Derived&>(*
this).apply(x
.right());
1935 static_cast<Derived&>(*
this).leave(x);
1940 static_cast<Derived&>(*
this).enter(x);
1941 static_cast<Derived&>(*
this).apply(x
.left());
1942 static_cast<Derived&>(*
this).apply(x
.right());
1943 static_cast<Derived&>(*
this).leave(x);
1948 static_cast<Derived&>(*
this).enter(x);
1949 static_cast<Derived&>(*
this).apply(x
.left());
1950 static_cast<Derived&>(*
this).apply(x
.right());
1951 static_cast<Derived&>(*
this).leave(x);
1956 static_cast<Derived&>(*
this).enter(x);
1957 static_cast<Derived&>(*
this).apply(x
.left());
1958 static_cast<Derived&>(*
this).apply(x
.right());
1959 static_cast<Derived&>(*
this).leave(x);
1964 static_cast<Derived&>(*
this).enter(x);
1965 static_cast<Derived&>(*
this).apply(x
.body());
1966 static_cast<Derived&>(*
this).leave(x);
1971 static_cast<Derived&>(*
this).enter(x);
1972 static_cast<Derived&>(*
this).apply(x
.body());
1973 static_cast<Derived&>(*
this).leave(x);
1978 static_cast<Derived&>(*
this).enter(x);
1979 static_cast<Derived&>(*
this).apply(x
.body());
1980 static_cast<Derived&>(*
this).leave(x);
1985 static_cast<Derived&>(*
this).enter(x);
1986 static_cast<Derived&>(*
this).apply(x
.body());
1987 static_cast<Derived&>(*
this).leave(x);
1992 static_cast<Derived&>(*
this).enter(x);
1993 static_cast<Derived&>(*
this).apply(x
.body());
1994 static_cast<Derived&>(*
this).leave(x);
1999 static_cast<Derived&>(*
this).enter(x);
2000 static_cast<Derived&>(*
this).apply(x
.formula());
2001 static_cast<Derived&>(*
this).apply(x
.operand());
2002 static_cast<Derived&>(*
this).leave(x);
2007 static_cast<Derived&>(*
this).enter(x);
2008 static_cast<Derived&>(*
this).apply(x
.formula());
2009 static_cast<Derived&>(*
this).apply(x
.operand());
2010 static_cast<Derived&>(*
this).leave(x);
2015 static_cast<Derived&>(*
this).enter(x);
2017 static_cast<Derived&>(*
this).leave(x);
2022 static_cast<Derived&>(*
this).enter(x);
2024 static_cast<Derived&>(*
this).leave(x);
2029 static_cast<Derived&>(*
this).enter(x);
2031 static_cast<Derived&>(*
this).leave(x);
2036 static_cast<Derived&>(*
this).enter(x);
2038 static_cast<Derived&>(*
this).leave(x);
2043 static_cast<Derived&>(*
this).enter(x);
2045 static_cast<Derived&>(*
this).leave(x);
2050 static_cast<Derived&>(*
this).enter(x);
2052 static_cast<Derived&>(*
this).apply(x
.operand());
2053 static_cast<Derived&>(*
this).leave(x);
2058 static_cast<Derived&>(*
this).enter(x);
2060 static_cast<Derived&>(*
this).apply(x
.operand());
2061 static_cast<Derived&>(*
this).leave(x);
2066 static_cast<Derived&>(*
this).enter(x);
2067 static_cast<Derived&>(*
this).apply(x
.formula());
2068 static_cast<Derived&>(*
this).leave(x);
2073 static_cast<Derived&>(*
this).enter(x);
2076 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
2080 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
2084 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
2088 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
2092 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
2096 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
2100 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
2104 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
2108 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
2112 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
2116 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
2120 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
2124 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
2128 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
2132 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
2136 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
2140 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
2144 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
2148 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
2152 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
2156 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
2160 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
2164 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
2168 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
2172 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
2176 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
2178 static_cast<Derived&>(*
this).leave(x);
2184template <
typename Derived>
2191template <
template <
class>
class Traverser,
class Derived>
2194 using super = Traverser<Derived>;
2201 static_cast<Derived&>(*
this).enter(x);
2203 static_cast<Derived&>(*
this).leave(x);
2208 static_cast<Derived&>(*
this).enter(x);
2210 static_cast<Derived&>(*
this).leave(x);
2215 static_cast<Derived&>(*
this).enter(x);
2216 static_cast<Derived&>(*
this).apply(x
.operand());
2217 static_cast<Derived&>(*
this).leave(x);
2222 static_cast<Derived&>(*
this).enter(x);
2223 static_cast<Derived&>(*
this).apply(x
.operand());
2224 static_cast<Derived&>(*
this).leave(x);
2229 static_cast<Derived&>(*
this).enter(x);
2230 static_cast<Derived&>(*
this).apply(x
.left());
2231 static_cast<Derived&>(*
this).apply(x
.right());
2232 static_cast<Derived&>(*
this).leave(x);
2237 static_cast<Derived&>(*
this).enter(x);
2238 static_cast<Derived&>(*
this).apply(x
.left());
2239 static_cast<Derived&>(*
this).apply(x
.right());
2240 static_cast<Derived&>(*
this).leave(x);
2245 static_cast<Derived&>(*
this).enter(x);
2246 static_cast<Derived&>(*
this).apply(x
.left());
2247 static_cast<Derived&>(*
this).apply(x
.right());
2248 static_cast<Derived&>(*
this).leave(x);
2253 static_cast<Derived&>(*
this).enter(x);
2254 static_cast<Derived&>(*
this).apply(x
.left());
2255 static_cast<Derived&>(*
this).apply(x
.right());
2256 static_cast<Derived&>(*
this).leave(x);
2261 static_cast<Derived&>(*
this).enter(x);
2262 static_cast<Derived&>(*
this).apply(x
.right());
2263 static_cast<Derived&>(*
this).leave(x);
2268 static_cast<Derived&>(*
this).enter(x);
2269 static_cast<Derived&>(*
this).apply(x
.left());
2270 static_cast<Derived&>(*
this).leave(x);
2275 static_cast<Derived&>(*
this).enter(x);
2276 static_cast<Derived&>(*
this).apply(x
.body());
2277 static_cast<Derived&>(*
this).leave(x);
2282 static_cast<Derived&>(*
this).enter(x);
2283 static_cast<Derived&>(*
this).apply(x
.body());
2284 static_cast<Derived&>(*
this).leave(x);
2289 static_cast<Derived&>(*
this).enter(x);
2290 static_cast<Derived&>(*
this).apply(x
.body());
2291 static_cast<Derived&>(*
this).leave(x);
2296 static_cast<Derived&>(*
this).enter(x);
2297 static_cast<Derived&>(*
this).apply(x
.body());
2298 static_cast<Derived&>(*
this).leave(x);
2303 static_cast<Derived&>(*
this).enter(x);
2304 static_cast<Derived&>(*
this).apply(x
.body());
2305 static_cast<Derived&>(*
this).leave(x);
2310 static_cast<Derived&>(*
this).enter(x);
2311 static_cast<Derived&>(*
this).apply(x
.operand());
2312 static_cast<Derived&>(*
this).leave(x);
2317 static_cast<Derived&>(*
this).enter(x);
2318 static_cast<Derived&>(*
this).apply(x
.operand());
2319 static_cast<Derived&>(*
this).leave(x);
2324 static_cast<Derived&>(*
this).enter(x);
2326 static_cast<Derived&>(*
this).leave(x);
2331 static_cast<Derived&>(*
this).enter(x);
2333 static_cast<Derived&>(*
this).leave(x);
2338 static_cast<Derived&>(*
this).enter(x);
2340 static_cast<Derived&>(*
this).leave(x);
2345 static_cast<Derived&>(*
this).enter(x);
2347 static_cast<Derived&>(*
this).leave(x);
2352 static_cast<Derived&>(*
this).enter(x);
2354 static_cast<Derived&>(*
this).leave(x);
2359 static_cast<Derived&>(*
this).enter(x);
2360 static_cast<Derived&>(*
this).apply(x
.operand());
2361 static_cast<Derived&>(*
this).leave(x);
2366 static_cast<Derived&>(*
this).enter(x);
2367 static_cast<Derived&>(*
this).apply(x
.operand());
2368 static_cast<Derived&>(*
this).leave(x);
2373 static_cast<Derived&>(*
this).enter(x);
2374 static_cast<Derived&>(*
this).apply(x
.formula());
2375 static_cast<Derived&>(*
this).leave(x);
2380 static_cast<Derived&>(*
this).enter(x);
2383 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
2387 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
2391 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
2395 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
2399 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
2403 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
2407 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
2411 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
2415 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
2419 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
2423 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
2427 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
2431 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
2435 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
2439 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
2443 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
2447 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
2451 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
2455 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
2459 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
2463 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
2467 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
2471 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
2475 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
2479 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
2483 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
2485 static_cast<Derived&>(*
this).leave(x);
2491template <
typename Derived>
2498template <
template <
class>
class Traverser,
class Derived>
2501 using super = Traverser<Derived>;
2508 static_cast<Derived&>(*
this).enter(x);
2510 static_cast<Derived&>(*
this).leave(x);
2515 static_cast<Derived&>(*
this).enter(x);
2517 static_cast<Derived&>(*
this).leave(x);
2522 static_cast<Derived&>(*
this).enter(x);
2523 static_cast<Derived&>(*
this).apply(x
.operand());
2524 static_cast<Derived&>(*
this).leave(x);
2529 static_cast<Derived&>(*
this).enter(x);
2530 static_cast<Derived&>(*
this).apply(x
.operand());
2531 static_cast<Derived&>(*
this).leave(x);
2536 static_cast<Derived&>(*
this).enter(x);
2537 static_cast<Derived&>(*
this).apply(x
.left());
2538 static_cast<Derived&>(*
this).apply(x
.right());
2539 static_cast<Derived&>(*
this).leave(x);
2544 static_cast<Derived&>(*
this).enter(x);
2545 static_cast<Derived&>(*
this).apply(x
.left());
2546 static_cast<Derived&>(*
this).apply(x
.right());
2547 static_cast<Derived&>(*
this).leave(x);
2552 static_cast<Derived&>(*
this).enter(x);
2553 static_cast<Derived&>(*
this).apply(x
.left());
2554 static_cast<Derived&>(*
this).apply(x
.right());
2555 static_cast<Derived&>(*
this).leave(x);
2560 static_cast<Derived&>(*
this).enter(x);
2561 static_cast<Derived&>(*
this).apply(x
.left());
2562 static_cast<Derived&>(*
this).apply(x
.right());
2563 static_cast<Derived&>(*
this).leave(x);
2568 static_cast<Derived&>(*
this).enter(x);
2569 static_cast<Derived&>(*
this).apply(x
.left());
2570 static_cast<Derived&>(*
this).apply(x
.right());
2571 static_cast<Derived&>(*
this).leave(x);
2576 static_cast<Derived&>(*
this).enter(x);
2577 static_cast<Derived&>(*
this).apply(x
.left());
2578 static_cast<Derived&>(*
this).apply(x
.right());
2579 static_cast<Derived&>(*
this).leave(x);
2584 static_cast<Derived&>(*
this).enter(x);
2586 static_cast<Derived&>(*
this).apply(x
.body());
2587 static_cast<Derived&>(*
this).leave(x);
2592 static_cast<Derived&>(*
this).enter(x);
2594 static_cast<Derived&>(*
this).apply(x
.body());
2595 static_cast<Derived&>(*
this).leave(x);
2600 static_cast<Derived&>(*
this).enter(x);
2602 static_cast<Derived&>(*
this).apply(x
.body());
2603 static_cast<Derived&>(*
this).leave(x);
2608 static_cast<Derived&>(*
this).enter(x);
2610 static_cast<Derived&>(*
this).apply(x
.body());
2611 static_cast<Derived&>(*
this).leave(x);
2616 static_cast<Derived&>(*
this).enter(x);
2618 static_cast<Derived&>(*
this).apply(x
.body());
2619 static_cast<Derived&>(*
this).leave(x);
2624 static_cast<Derived&>(*
this).enter(x);
2625 static_cast<Derived&>(*
this).apply(x
.formula());
2626 static_cast<Derived&>(*
this).apply(x
.operand());
2627 static_cast<Derived&>(*
this).leave(x);
2632 static_cast<Derived&>(*
this).enter(x);
2633 static_cast<Derived&>(*
this).apply(x
.formula());
2634 static_cast<Derived&>(*
this).apply(x
.operand());
2635 static_cast<Derived&>(*
this).leave(x);
2640 static_cast<Derived&>(*
this).enter(x);
2642 static_cast<Derived&>(*
this).leave(x);
2647 static_cast<Derived&>(*
this).enter(x);
2649 static_cast<Derived&>(*
this).leave(x);
2654 static_cast<Derived&>(*
this).enter(x);
2656 static_cast<Derived&>(*
this).leave(x);
2661 static_cast<Derived&>(*
this).enter(x);
2663 static_cast<Derived&>(*
this).leave(x);
2668 static_cast<Derived&>(*
this).enter(x);
2670 static_cast<Derived&>(*
this).leave(x);
2675 static_cast<Derived&>(*
this).enter(x);
2677 static_cast<Derived&>(*
this).apply(x
.operand());
2678 static_cast<Derived&>(*
this).leave(x);
2683 static_cast<Derived&>(*
this).enter(x);
2685 static_cast<Derived&>(*
this).apply(x
.operand());
2686 static_cast<Derived&>(*
this).leave(x);
2691 static_cast<Derived&>(*
this).enter(x);
2692 static_cast<Derived&>(*
this).apply(x
.formula());
2693 static_cast<Derived&>(*
this).leave(x);
2698 static_cast<Derived&>(*
this).enter(x);
2701 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
2705 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
2709 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
2713 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
2717 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
2721 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
2725 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
2729 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
2733 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
2737 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
2741 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
2745 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
2749 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
2753 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
2757 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
2761 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
2765 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
2769 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
2773 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
2777 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
2781 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
2785 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
2789 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
2793 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
2797 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
2801 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
2803 static_cast<Derived&>(*
this).leave(x);
2809template <
typename Derived>
2816template <
template <
class>
class Traverser,
class Derived>
2819 using super = Traverser<Derived>;
2826 static_cast<Derived&>(*
this).enter(x);
2828 static_cast<Derived&>(*
this).leave(x);
2833 static_cast<Derived&>(*
this).enter(x);
2835 static_cast<Derived&>(*
this).leave(x);
2840 static_cast<Derived&>(*
this).enter(x);
2841 static_cast<Derived&>(*
this).apply(x
.operand());
2842 static_cast<Derived&>(*
this).leave(x);
2847 static_cast<Derived&>(*
this).enter(x);
2848 static_cast<Derived&>(*
this).apply(x
.operand());
2849 static_cast<Derived&>(*
this).leave(x);
2854 static_cast<Derived&>(*
this).enter(x);
2855 static_cast<Derived&>(*
this).apply(x
.left());
2856 static_cast<Derived&>(*
this).apply(x
.right());
2857 static_cast<Derived&>(*
this).leave(x);
2862 static_cast<Derived&>(*
this).enter(x);
2863 static_cast<Derived&>(*
this).apply(x
.left());
2864 static_cast<Derived&>(*
this).apply(x
.right());
2865 static_cast<Derived&>(*
this).leave(x);
2870 static_cast<Derived&>(*
this).enter(x);
2871 static_cast<Derived&>(*
this).apply(x
.left());
2872 static_cast<Derived&>(*
this).apply(x
.right());
2873 static_cast<Derived&>(*
this).leave(x);
2878 static_cast<Derived&>(*
this).enter(x);
2879 static_cast<Derived&>(*
this).apply(x
.left());
2880 static_cast<Derived&>(*
this).apply(x
.right());
2881 static_cast<Derived&>(*
this).leave(x);
2886 static_cast<Derived&>(*
this).enter(x);
2887 static_cast<Derived&>(*
this).apply(x
.right());
2888 static_cast<Derived&>(*
this).leave(x);
2893 static_cast<Derived&>(*
this).enter(x);
2894 static_cast<Derived&>(*
this).apply(x
.left());
2895 static_cast<Derived&>(*
this).leave(x);
2900 static_cast<Derived&>(*
this).enter(x);
2901 static_cast<Derived&>(*
this).apply(x
.body());
2902 static_cast<Derived&>(*
this).leave(x);
2907 static_cast<Derived&>(*
this).enter(x);
2908 static_cast<Derived&>(*
this).apply(x
.body());
2909 static_cast<Derived&>(*
this).leave(x);
2914 static_cast<Derived&>(*
this).enter(x);
2915 static_cast<Derived&>(*
this).apply(x
.body());
2916 static_cast<Derived&>(*
this).leave(x);
2921 static_cast<Derived&>(*
this).enter(x);
2922 static_cast<Derived&>(*
this).apply(x
.body());
2923 static_cast<Derived&>(*
this).leave(x);
2928 static_cast<Derived&>(*
this).enter(x);
2929 static_cast<Derived&>(*
this).apply(x
.body());
2930 static_cast<Derived&>(*
this).leave(x);
2935 static_cast<Derived&>(*
this).enter(x);
2936 static_cast<Derived&>(*
this).apply(x
.operand());
2937 static_cast<Derived&>(*
this).leave(x);
2942 static_cast<Derived&>(*
this).enter(x);
2943 static_cast<Derived&>(*
this).apply(x
.operand());
2944 static_cast<Derived&>(*
this).leave(x);
2949 static_cast<Derived&>(*
this).enter(x);
2951 static_cast<Derived&>(*
this).leave(x);
2956 static_cast<Derived&>(*
this).enter(x);
2958 static_cast<Derived&>(*
this).leave(x);
2963 static_cast<Derived&>(*
this).enter(x);
2965 static_cast<Derived&>(*
this).leave(x);
2970 static_cast<Derived&>(*
this).enter(x);
2972 static_cast<Derived&>(*
this).leave(x);
2977 static_cast<Derived&>(*
this).enter(x);
2979 static_cast<Derived&>(*
this).leave(x);
2984 static_cast<Derived&>(*
this).enter(x);
2985 static_cast<Derived&>(*
this).apply(x
.operand());
2986 static_cast<Derived&>(*
this).leave(x);
2991 static_cast<Derived&>(*
this).enter(x);
2992 static_cast<Derived&>(*
this).apply(x
.operand());
2993 static_cast<Derived&>(*
this).leave(x);
2998 static_cast<Derived&>(*
this).enter(x);
2999 static_cast<Derived&>(*
this).apply(x
.formula());
3000 static_cast<Derived&>(*
this).leave(x);
3005 static_cast<Derived&>(*
this).enter(x);
3008 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
3012 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
3016 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
3020 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
3024 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
3028 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
3032 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
3036 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
3040 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
3044 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
3048 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
3052 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
3056 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
3060 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
3064 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
3068 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
3072 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
3076 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
3080 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
3084 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
3088 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
3092 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
3096 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
3100 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
3104 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
3108 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
3110 static_cast<Derived&>(*
this).leave(x);
3116template <
typename Derived>
3123template <
template <
class>
class Traverser,
class Derived>
3126 using super = Traverser<Derived>;
3133 static_cast<Derived&>(*
this).enter(x);
3135 static_cast<Derived&>(*
this).leave(x);
3140 static_cast<Derived&>(*
this).enter(x);
3142 static_cast<Derived&>(*
this).leave(x);
3147 static_cast<Derived&>(*
this).enter(x);
3148 static_cast<Derived&>(*
this).apply(x
.operand());
3149 static_cast<Derived&>(*
this).leave(x);
3154 static_cast<Derived&>(*
this).enter(x);
3155 static_cast<Derived&>(*
this).apply(x
.operand());
3156 static_cast<Derived&>(*
this).leave(x);
3161 static_cast<Derived&>(*
this).enter(x);
3162 static_cast<Derived&>(*
this).apply(x
.left());
3163 static_cast<Derived&>(*
this).apply(x
.right());
3164 static_cast<Derived&>(*
this).leave(x);
3169 static_cast<Derived&>(*
this).enter(x);
3170 static_cast<Derived&>(*
this).apply(x
.left());
3171 static_cast<Derived&>(*
this).apply(x
.right());
3172 static_cast<Derived&>(*
this).leave(x);
3177 static_cast<Derived&>(*
this).enter(x);
3178 static_cast<Derived&>(*
this).apply(x
.left());
3179 static_cast<Derived&>(*
this).apply(x
.right());
3180 static_cast<Derived&>(*
this).leave(x);
3185 static_cast<Derived&>(*
this).enter(x);
3186 static_cast<Derived&>(*
this).apply(x
.left());
3187 static_cast<Derived&>(*
this).apply(x
.right());
3188 static_cast<Derived&>(*
this).leave(x);
3193 static_cast<Derived&>(*
this).enter(x);
3194 static_cast<Derived&>(*
this).apply(x
.left());
3195 static_cast<Derived&>(*
this).apply(x
.right());
3196 static_cast<Derived&>(*
this).leave(x);
3201 static_cast<Derived&>(*
this).enter(x);
3202 static_cast<Derived&>(*
this).apply(x
.left());
3203 static_cast<Derived&>(*
this).apply(x
.right());
3204 static_cast<Derived&>(*
this).leave(x);
3209 static_cast<Derived&>(*
this).enter(x);
3211 static_cast<Derived&>(*
this).apply(x
.body());
3212 static_cast<Derived&>(*
this).leave(x);
3217 static_cast<Derived&>(*
this).enter(x);
3219 static_cast<Derived&>(*
this).apply(x
.body());
3220 static_cast<Derived&>(*
this).leave(x);
3225 static_cast<Derived&>(*
this).enter(x);
3227 static_cast<Derived&>(*
this).apply(x
.body());
3228 static_cast<Derived&>(*
this).leave(x);
3233 static_cast<Derived&>(*
this).enter(x);
3235 static_cast<Derived&>(*
this).apply(x
.body());
3236 static_cast<Derived&>(*
this).leave(x);
3241 static_cast<Derived&>(*
this).enter(x);
3243 static_cast<Derived&>(*
this).apply(x
.body());
3244 static_cast<Derived&>(*
this).leave(x);
3249 static_cast<Derived&>(*
this).enter(x);
3250 static_cast<Derived&>(*
this).apply(x
.formula());
3251 static_cast<Derived&>(*
this).apply(x
.operand());
3252 static_cast<Derived&>(*
this).leave(x);
3257 static_cast<Derived&>(*
this).enter(x);
3258 static_cast<Derived&>(*
this).apply(x
.formula());
3259 static_cast<Derived&>(*
this).apply(x
.operand());
3260 static_cast<Derived&>(*
this).leave(x);
3265 static_cast<Derived&>(*
this).enter(x);
3267 static_cast<Derived&>(*
this).leave(x);
3272 static_cast<Derived&>(*
this).enter(x);
3274 static_cast<Derived&>(*
this).leave(x);
3279 static_cast<Derived&>(*
this).enter(x);
3281 static_cast<Derived&>(*
this).leave(x);
3286 static_cast<Derived&>(*
this).enter(x);
3288 static_cast<Derived&>(*
this).leave(x);
3293 static_cast<Derived&>(*
this).enter(x);
3294 static_cast<Derived&>(*
this).apply(x
.name());
3296 static_cast<Derived&>(*
this).leave(x);
3301 static_cast<Derived&>(*
this).enter(x);
3302 static_cast<Derived&>(*
this).apply(x
.name());
3304 static_cast<Derived&>(*
this).apply(x
.operand());
3305 static_cast<Derived&>(*
this).leave(x);
3310 static_cast<Derived&>(*
this).enter(x);
3311 static_cast<Derived&>(*
this).apply(x
.name());
3313 static_cast<Derived&>(*
this).apply(x
.operand());
3314 static_cast<Derived&>(*
this).leave(x);
3319 static_cast<Derived&>(*
this).enter(x);
3321 static_cast<Derived&>(*
this).apply(x
.formula());
3322 static_cast<Derived&>(*
this).leave(x);
3327 static_cast<Derived&>(*
this).enter(x);
3330 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
3334 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
3338 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
3342 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
3346 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
3350 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
3354 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
3358 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
3362 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
3366 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
3370 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
3374 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
3378 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
3382 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
3386 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
3390 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
3394 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
3398 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
3402 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
3406 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
3410 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
3414 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
3418 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
3422 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
3426 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
3430 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
3432 static_cast<Derived&>(*
this).leave(x);
3438template <
typename Derived>
3445template <
template <
class>
class Traverser,
class Derived>
3448 using super = Traverser<Derived>;
3455 static_cast<Derived&>(*
this).enter(x);
3457 static_cast<Derived&>(*
this).leave(x);
3462 static_cast<Derived&>(*
this).enter(x);
3464 static_cast<Derived&>(*
this).leave(x);
3469 static_cast<Derived&>(*
this).enter(x);
3470 static_cast<Derived&>(*
this).apply(x
.operand());
3471 static_cast<Derived&>(*
this).leave(x);
3476 static_cast<Derived&>(*
this).enter(x);
3477 static_cast<Derived&>(*
this).apply(x
.operand());
3478 static_cast<Derived&>(*
this).leave(x);
3483 static_cast<Derived&>(*
this).enter(x);
3484 static_cast<Derived&>(*
this).apply(x
.left());
3485 static_cast<Derived&>(*
this).apply(x
.right());
3486 static_cast<Derived&>(*
this).leave(x);
3491 static_cast<Derived&>(*
this).enter(x);
3492 static_cast<Derived&>(*
this).apply(x
.left());
3493 static_cast<Derived&>(*
this).apply(x
.right());
3494 static_cast<Derived&>(*
this).leave(x);
3499 static_cast<Derived&>(*
this).enter(x);
3500 static_cast<Derived&>(*
this).apply(x
.left());
3501 static_cast<Derived&>(*
this).apply(x
.right());
3502 static_cast<Derived&>(*
this).leave(x);
3507 static_cast<Derived&>(*
this).enter(x);
3508 static_cast<Derived&>(*
this).apply(x
.left());
3509 static_cast<Derived&>(*
this).apply(x
.right());
3510 static_cast<Derived&>(*
this).leave(x);
3515 static_cast<Derived&>(*
this).enter(x);
3516 static_cast<Derived&>(*
this).apply(x
.right());
3517 static_cast<Derived&>(*
this).leave(x);
3522 static_cast<Derived&>(*
this).enter(x);
3523 static_cast<Derived&>(*
this).apply(x
.left());
3524 static_cast<Derived&>(*
this).leave(x);
3529 static_cast<Derived&>(*
this).enter(x);
3530 static_cast<Derived&>(*
this).apply(x
.body());
3531 static_cast<Derived&>(*
this).leave(x);
3536 static_cast<Derived&>(*
this).enter(x);
3537 static_cast<Derived&>(*
this).apply(x
.body());
3538 static_cast<Derived&>(*
this).leave(x);
3543 static_cast<Derived&>(*
this).enter(x);
3544 static_cast<Derived&>(*
this).apply(x
.body());
3545 static_cast<Derived&>(*
this).leave(x);
3550 static_cast<Derived&>(*
this).enter(x);
3551 static_cast<Derived&>(*
this).apply(x
.body());
3552 static_cast<Derived&>(*
this).leave(x);
3557 static_cast<Derived&>(*
this).enter(x);
3558 static_cast<Derived&>(*
this).apply(x
.body());
3559 static_cast<Derived&>(*
this).leave(x);
3564 static_cast<Derived&>(*
this).enter(x);
3565 static_cast<Derived&>(*
this).apply(x
.formula());
3566 static_cast<Derived&>(*
this).apply(x
.operand());
3567 static_cast<Derived&>(*
this).leave(x);
3572 static_cast<Derived&>(*
this).enter(x);
3573 static_cast<Derived&>(*
this).apply(x
.formula());
3574 static_cast<Derived&>(*
this).apply(x
.operand());
3575 static_cast<Derived&>(*
this).leave(x);
3580 static_cast<Derived&>(*
this).enter(x);
3582 static_cast<Derived&>(*
this).leave(x);
3587 static_cast<Derived&>(*
this).enter(x);
3589 static_cast<Derived&>(*
this).leave(x);
3594 static_cast<Derived&>(*
this).enter(x);
3596 static_cast<Derived&>(*
this).leave(x);
3601 static_cast<Derived&>(*
this).enter(x);
3603 static_cast<Derived&>(*
this).leave(x);
3608 static_cast<Derived&>(*
this).enter(x);
3610 static_cast<Derived&>(*
this).leave(x);
3615 static_cast<Derived&>(*
this).enter(x);
3616 static_cast<Derived&>(*
this).apply(x
.operand());
3617 static_cast<Derived&>(*
this).leave(x);
3622 static_cast<Derived&>(*
this).enter(x);
3623 static_cast<Derived&>(*
this).apply(x
.operand());
3624 static_cast<Derived&>(*
this).leave(x);
3629 static_cast<Derived&>(*
this).enter(x);
3630 static_cast<Derived&>(*
this).apply(x
.formula());
3631 static_cast<Derived&>(*
this).leave(x);
3636 static_cast<Derived&>(*
this).enter(x);
3639 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
3643 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
3647 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
3651 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
3655 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
3659 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
3663 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
3667 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
3671 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
3675 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
3679 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
3683 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
3687 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
3691 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
3695 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
3699 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
3703 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
3707 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
3711 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
3715 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
3719 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
3723 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
3727 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
3731 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
3735 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
3739 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
3741 static_cast<Derived&>(*
this).leave(x);
3747template <
typename Derived>
3754template <
template <
class>
class Traverser,
class Derived>
3757 using super = Traverser<Derived>;
3764 static_cast<Derived&>(*
this).enter(x);
3766 static_cast<Derived&>(*
this).leave(x);
3771 static_cast<Derived&>(*
this).enter(x);
3773 static_cast<Derived&>(*
this).leave(x);
3778 static_cast<Derived&>(*
this).enter(x);
3779 static_cast<Derived&>(*
this).apply(x
.operand());
3780 static_cast<Derived&>(*
this).leave(x);
3785 static_cast<Derived&>(*
this).enter(x);
3786 static_cast<Derived&>(*
this).apply(x
.operand());
3787 static_cast<Derived&>(*
this).leave(x);
3792 static_cast<Derived&>(*
this).enter(x);
3793 static_cast<Derived&>(*
this).apply(x
.left());
3794 static_cast<Derived&>(*
this).apply(x
.right());
3795 static_cast<Derived&>(*
this).leave(x);
3800 static_cast<Derived&>(*
this).enter(x);
3801 static_cast<Derived&>(*
this).apply(x
.left());
3802 static_cast<Derived&>(*
this).apply(x
.right());
3803 static_cast<Derived&>(*
this).leave(x);
3808 static_cast<Derived&>(*
this).enter(x);
3809 static_cast<Derived&>(*
this).apply(x
.left());
3810 static_cast<Derived&>(*
this).apply(x
.right());
3811 static_cast<Derived&>(*
this).leave(x);
3816 static_cast<Derived&>(*
this).enter(x);
3817 static_cast<Derived&>(*
this).apply(x
.left());
3818 static_cast<Derived&>(*
this).apply(x
.right());
3819 static_cast<Derived&>(*
this).leave(x);
3824 static_cast<Derived&>(*
this).enter(x);
3825 static_cast<Derived&>(*
this).apply(x
.right());
3826 static_cast<Derived&>(*
this).leave(x);
3831 static_cast<Derived&>(*
this).enter(x);
3832 static_cast<Derived&>(*
this).apply(x
.left());
3833 static_cast<Derived&>(*
this).leave(x);
3838 static_cast<Derived&>(*
this).enter(x);
3839 static_cast<Derived&>(*
this).apply(x
.body());
3840 static_cast<Derived&>(*
this).leave(x);
3845 static_cast<Derived&>(*
this).enter(x);
3846 static_cast<Derived&>(*
this).apply(x
.body());
3847 static_cast<Derived&>(*
this).leave(x);
3852 static_cast<Derived&>(*
this).enter(x);
3853 static_cast<Derived&>(*
this).apply(x
.body());
3854 static_cast<Derived&>(*
this).leave(x);
3859 static_cast<Derived&>(*
this).enter(x);
3860 static_cast<Derived&>(*
this).apply(x
.body());
3861 static_cast<Derived&>(*
this).leave(x);
3866 static_cast<Derived&>(*
this).enter(x);
3867 static_cast<Derived&>(*
this).apply(x
.body());
3868 static_cast<Derived&>(*
this).leave(x);
3873 static_cast<Derived&>(*
this).enter(x);
3874 static_cast<Derived&>(*
this).apply(x
.formula());
3875 static_cast<Derived&>(*
this).apply(x
.operand());
3876 static_cast<Derived&>(*
this).leave(x);
3881 static_cast<Derived&>(*
this).enter(x);
3882 static_cast<Derived&>(*
this).apply(x
.formula());
3883 static_cast<Derived&>(*
this).apply(x
.operand());
3884 static_cast<Derived&>(*
this).leave(x);
3889 static_cast<Derived&>(*
this).enter(x);
3891 static_cast<Derived&>(*
this).leave(x);
3896 static_cast<Derived&>(*
this).enter(x);
3898 static_cast<Derived&>(*
this).leave(x);
3903 static_cast<Derived&>(*
this).enter(x);
3905 static_cast<Derived&>(*
this).leave(x);
3910 static_cast<Derived&>(*
this).enter(x);
3912 static_cast<Derived&>(*
this).leave(x);
3917 static_cast<Derived&>(*
this).enter(x);
3919 static_cast<Derived&>(*
this).leave(x);
3924 static_cast<Derived&>(*
this).enter(x);
3925 static_cast<Derived&>(*
this).apply(x
.operand());
3926 static_cast<Derived&>(*
this).leave(x);
3931 static_cast<Derived&>(*
this).enter(x);
3932 static_cast<Derived&>(*
this).apply(x
.operand());
3933 static_cast<Derived&>(*
this).leave(x);
3938 static_cast<Derived&>(*
this).enter(x);
3940 static_cast<Derived&>(*
this).apply(x
.formula());
3941 static_cast<Derived&>(*
this).leave(x);
3946 static_cast<Derived&>(*
this).enter(x);
3949 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::data_expression>(x));
3953 static_cast<Derived&>(*
this).apply(atermpp::down_cast<data::untyped_data_parameter>(x));
3957 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::true_>(x));
3961 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::false_>(x));
3965 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::not_>(x));
3969 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::minus>(x));
3973 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::and_>(x));
3977 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::or_>(x));
3981 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::imp>(x));
3985 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::plus>(x));
3989 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply>(x));
3993 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::const_multiply_alt>(x));
3997 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::forall>(x));
4001 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::exists>(x));
4005 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::infimum>(x));
4009 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::supremum>(x));
4013 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::sum>(x));
4017 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::must>(x));
4021 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::may>(x));
4025 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled>(x));
4029 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::yaled_timed>(x));
4033 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay>(x));
4037 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::delay_timed>(x));
4041 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::variable>(x));
4045 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::nu>(x));
4049 static_cast<Derived&>(*
this).apply(atermpp::down_cast<state_formulas::mu>(x));
4051 static_cast<Derived&>(*
this).leave(x);
4057template <
typename Derived>
data_specification()=default
Default constructor. Generate a data specification that contains only booleans and positive numbers.
\brief An untyped parameter
Linear process specification.
\brief An untyped multi action or data application
D_ParserTables parser_tables_mcrl2
void warn_left_merge_merge(const parse_node &)
Prints a warning for each occurrence of 'x ||_ y || z' in the parse tree.
void warn_and_or(const parse_node &)
Prints a warning for each occurrence of 'x && y || z' in the parse tree.
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.
The main namespace for the Process library.
bool is_untyped_multi_action(const atermpp::aterm &x)
expression traverser that visits all sub expressions