12#ifndef MCRL2_MODAL_FORMULA_BUILDER_H
13#define MCRL2_MODAL_FORMULA_BUILDER_H
21namespace action_formulas
25template <
typename Derived>
34 static_cast<Derived&
>(*this).enter(x);
36 static_cast<Derived&
>(*this).leave(x);
42template <
template <
class>
class Builder,
class Derived>
56 static_cast<Derived&
>(*this).enter(x);
58 static_cast<Derived&
>(*this).leave(x);
67 static_cast<Derived&
>(*this).enter(x);
69 static_cast<Derived&
>(*this).leave(x);
77 static_cast<Derived&
>(*this).enter(x);
79 static_cast<Derived&
>(*this).leave(x);
86 static_cast<Derived&
>(*this).enter(x);
88 static_cast<Derived&
>(*this).leave(x);
95 static_cast<Derived&
>(*this).enter(x);
97 static_cast<Derived&
>(*this).leave(x);
104 static_cast<Derived&
>(*this).enter(x);
106 static_cast<Derived&
>(*this).leave(x);
113 static_cast<Derived&
>(*this).enter(x);
115 static_cast<Derived&
>(*this).leave(x);
122 static_cast<Derived&
>(*this).enter(x);
124 static_cast<Derived&
>(*this).leave(x);
131 static_cast<Derived&
>(*this).enter(x);
133 static_cast<Derived&
>(*this).leave(x);
140 static_cast<Derived&
>(*this).enter(x);
142 static_cast<Derived&
>(*this).leave(x);
149 static_cast<Derived&
>(*this).enter(x);
152 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
156 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
160 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::true_>(x));
164 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::false_>(x));
168 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::not_>(x));
172 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::and_>(x));
176 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::or_>(x));
180 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::imp>(x));
184 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::forall>(x));
188 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::exists>(x));
192 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::at>(x));
196 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::multi_action>(x));
200 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<process::untyped_multi_action>(x));
202 static_cast<Derived&
>(*this).leave(x);
208template <
typename Derived>
215template <
template <
class>
class Builder,
class Derived>
229 static_cast<Derived&
>(*this).enter(x);
231 static_cast<Derived&
>(*this).leave(x);
240 static_cast<Derived&
>(*this).enter(x);
242 static_cast<Derived&
>(*this).leave(x);
250 static_cast<Derived&
>(*this).enter(x);
252 static_cast<Derived&
>(*this).leave(x);
259 static_cast<Derived&
>(*this).enter(x);
261 static_cast<Derived&
>(*this).leave(x);
268 static_cast<Derived&
>(*this).enter(x);
270 static_cast<Derived&
>(*this).leave(x);
277 static_cast<Derived&
>(*this).enter(x);
279 static_cast<Derived&
>(*this).leave(x);
286 static_cast<Derived&
>(*this).enter(x);
288 static_cast<Derived&
>(*this).leave(x);
295 static_cast<Derived&
>(*this).enter(x);
297 static_cast<Derived&
>(*this).leave(x);
304 static_cast<Derived&
>(*this).enter(x);
306 static_cast<Derived&
>(*this).leave(x);
313 static_cast<Derived&
>(*this).enter(x);
315 static_cast<Derived&
>(*this).leave(x);
322 static_cast<Derived&
>(*this).enter(x);
325 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
329 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
333 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::true_>(x));
337 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::false_>(x));
341 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::not_>(x));
345 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::and_>(x));
349 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::or_>(x));
353 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::imp>(x));
357 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::forall>(x));
361 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::exists>(x));
365 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::at>(x));
369 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::multi_action>(x));
373 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<process::untyped_multi_action>(x));
375 static_cast<Derived&
>(*this).leave(x);
381template <
typename Derived>
388template <
template <
class>
class Builder,
class Derived>
402 static_cast<Derived&
>(*this).enter(x);
404 static_cast<Derived&
>(*this).leave(x);
413 static_cast<Derived&
>(*this).enter(x);
415 static_cast<Derived&
>(*this).leave(x);
423 static_cast<Derived&
>(*this).enter(x);
425 static_cast<Derived&
>(*this).leave(x);
432 static_cast<Derived&
>(*this).enter(x);
434 static_cast<Derived&
>(*this).leave(x);
441 static_cast<Derived&
>(*this).enter(x);
443 static_cast<Derived&
>(*this).leave(x);
450 static_cast<Derived&
>(*this).enter(x);
452 static_cast<Derived&
>(*this).leave(x);
459 static_cast<Derived&
>(*this).enter(x);
461 static_cast<Derived&
>(*this).leave(x);
468 static_cast<Derived&
>(*this).enter(x);
470 static_cast<Derived&
>(*this).leave(x);
477 static_cast<Derived&
>(*this).enter(x);
479 static_cast<Derived&
>(*this).leave(x);
486 static_cast<Derived&
>(*this).enter(x);
488 static_cast<Derived&
>(*this).leave(x);
495 static_cast<Derived&
>(*this).enter(x);
498 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
502 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
506 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::true_>(x));
510 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::false_>(x));
514 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::not_>(x));
518 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::and_>(x));
522 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::or_>(x));
526 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::imp>(x));
530 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::forall>(x));
534 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::exists>(x));
538 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::at>(x));
542 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::multi_action>(x));
546 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<process::untyped_multi_action>(x));
548 static_cast<Derived&
>(*this).leave(x);
554template <
typename Derived>
561template <
template <
class>
class Builder,
class Derived>
575 static_cast<Derived&
>(*this).enter(x);
577 static_cast<Derived&
>(*this).leave(x);
586 static_cast<Derived&
>(*this).enter(x);
588 static_cast<Derived&
>(*this).leave(x);
596 static_cast<Derived&
>(*this).enter(x);
598 static_cast<Derived&
>(*this).leave(x);
605 static_cast<Derived&
>(*this).enter(x);
607 static_cast<Derived&
>(*this).leave(x);
614 static_cast<Derived&
>(*this).enter(x);
616 static_cast<Derived&
>(*this).leave(x);
623 static_cast<Derived&
>(*this).enter(x);
625 static_cast<Derived&
>(*this).leave(x);
632 static_cast<Derived&
>(*this).enter(x);
634 static_cast<Derived&
>(*this).leave(x);
641 static_cast<Derived&
>(*this).enter(x);
643 static_cast<Derived&
>(*this).leave(x);
650 static_cast<Derived&
>(*this).enter(x);
652 static_cast<Derived&
>(*this).leave(x);
660 static_cast<Derived&
>(*this).enter(x);
662 static_cast<Derived&
>(*this).leave(x);
670 static_cast<Derived&
>(*this).enter(x);
673 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
677 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
681 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::true_>(x));
685 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::false_>(x));
689 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::not_>(x));
693 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::and_>(x));
697 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::or_>(x));
701 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::imp>(x));
705 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::forall>(x));
709 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::exists>(x));
713 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::at>(x));
717 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::multi_action>(x));
721 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<process::untyped_multi_action>(x));
723 static_cast<Derived&
>(*this).leave(x);
729template <
typename Derived>
737namespace regular_formulas
741template <
typename Derived>
751 static_cast<Derived&
>(*this).enter(x);
753 static_cast<Derived&
>(*this).leave(x);
761 static_cast<Derived&
>(*this).enter(x);
763 static_cast<Derived&
>(*this).leave(x);
769template <
template <
class>
class Builder,
class Derived>
782 static_cast<Derived&
>(*this).enter(x);
784 static_cast<Derived&
>(*this).leave(x);
791 static_cast<Derived&
>(*this).enter(x);
793 static_cast<Derived&
>(*this).leave(x);
800 static_cast<Derived&
>(*this).enter(x);
802 static_cast<Derived&
>(*this).leave(x);
809 static_cast<Derived&
>(*this).enter(x);
811 static_cast<Derived&
>(*this).leave(x);
818 static_cast<Derived&
>(*this).enter(x);
820 static_cast<Derived&
>(*this).leave(x);
827 static_cast<Derived&
>(*this).enter(x);
830 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
834 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::action_formula>(x));
838 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::seq>(x));
842 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::alt>(x));
846 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans>(x));
850 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans_or_nil>(x));
854 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
856 static_cast<Derived&
>(*this).leave(x);
862template <
typename Derived>
869template <
template <
class>
class Builder,
class Derived>
882 static_cast<Derived&
>(*this).enter(x);
884 static_cast<Derived&
>(*this).leave(x);
891 static_cast<Derived&
>(*this).enter(x);
893 static_cast<Derived&
>(*this).leave(x);
900 static_cast<Derived&
>(*this).enter(x);
902 static_cast<Derived&
>(*this).leave(x);
909 static_cast<Derived&
>(*this).enter(x);
911 static_cast<Derived&
>(*this).leave(x);
918 static_cast<Derived&
>(*this).enter(x);
920 static_cast<Derived&
>(*this).leave(x);
927 static_cast<Derived&
>(*this).enter(x);
930 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
934 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::action_formula>(x));
938 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::seq>(x));
942 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::alt>(x));
946 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans>(x));
950 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans_or_nil>(x));
954 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
956 static_cast<Derived&
>(*this).leave(x);
962template <
typename Derived>
969template <
template <
class>
class Builder,
class Derived>
982 static_cast<Derived&
>(*this).enter(x);
984 static_cast<Derived&
>(*this).leave(x);
991 static_cast<Derived&
>(*this).enter(x);
993 static_cast<Derived&
>(*this).leave(x);
1000 static_cast<Derived&
>(*this).enter(x);
1002 static_cast<Derived&
>(*this).leave(x);
1009 static_cast<Derived&
>(*this).enter(x);
1011 static_cast<Derived&
>(*this).leave(x);
1018 static_cast<Derived&
>(*this).enter(x);
1020 static_cast<Derived&
>(*this).leave(x);
1027 static_cast<Derived&
>(*this).enter(x);
1030 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
1034 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::action_formula>(x));
1038 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::seq>(x));
1042 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::alt>(x));
1046 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans>(x));
1050 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1054 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1056 static_cast<Derived&
>(*this).leave(x);
1062template <
typename Derived>
1069template <
template <
class>
class Builder,
class Derived>
1075 using super::update;
1082 static_cast<Derived&
>(*this).enter(x);
1084 static_cast<Derived&
>(*this).leave(x);
1091 static_cast<Derived&
>(*this).enter(x);
1093 static_cast<Derived&
>(*this).leave(x);
1100 static_cast<Derived&
>(*this).enter(x);
1102 static_cast<Derived&
>(*this).leave(x);
1109 static_cast<Derived&
>(*this).enter(x);
1111 static_cast<Derived&
>(*this).leave(x);
1118 static_cast<Derived&
>(*this).enter(x);
1120 static_cast<Derived&
>(*this).leave(x);
1127 static_cast<Derived&
>(*this).enter(x);
1130 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
1134 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<action_formulas::action_formula>(x));
1138 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::seq>(x));
1142 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::alt>(x));
1146 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans>(x));
1150 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::trans_or_nil>(x));
1154 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<regular_formulas::untyped_regular_formula>(x));
1156 static_cast<Derived&
>(*this).leave(x);
1162template <
typename Derived>
1170namespace state_formulas
1174template <
typename Derived>
1183 static_cast<Derived&
>(*this).enter(x);
1185 static_cast<Derived&
>(*this).leave(x);
1192template <
template <
class>
class Builder,
class Derived>
1198 using super::update;
1206 static_cast<Derived&
>(*this).enter(x);
1208 static_cast<Derived&
>(*this).leave(x);
1217 static_cast<Derived&
>(*this).enter(x);
1219 static_cast<Derived&
>(*this).leave(x);
1227 static_cast<Derived&
>(*this).enter(x);
1229 static_cast<Derived&
>(*this).leave(x);
1236 static_cast<Derived&
>(*this).enter(x);
1238 static_cast<Derived&
>(*this).leave(x);
1245 static_cast<Derived&
>(*this).enter(x);
1247 static_cast<Derived&
>(*this).leave(x);
1254 static_cast<Derived&
>(*this).enter(x);
1256 static_cast<Derived&
>(*this).leave(x);
1263 static_cast<Derived&
>(*this).enter(x);
1265 static_cast<Derived&
>(*this).leave(x);
1272 static_cast<Derived&
>(*this).enter(x);
1274 static_cast<Derived&
>(*this).leave(x);
1281 static_cast<Derived&
>(*this).enter(x);
1283 static_cast<Derived&
>(*this).leave(x);
1290 static_cast<Derived&
>(*this).enter(x);
1292 static_cast<Derived&
>(*this).leave(x);
1299 static_cast<Derived&
>(*this).enter(x);
1301 static_cast<Derived&
>(*this).leave(x);
1308 static_cast<Derived&
>(*this).enter(x);
1310 static_cast<Derived&
>(*this).leave(x);
1317 static_cast<Derived&
>(*this).enter(x);
1319 static_cast<Derived&
>(*this).leave(x);
1326 static_cast<Derived&
>(*this).enter(x);
1328 static_cast<Derived&
>(*this).leave(x);
1335 static_cast<Derived&
>(*this).enter(x);
1337 static_cast<Derived&
>(*this).leave(x);
1344 static_cast<Derived&
>(*this).enter(x);
1346 static_cast<Derived&
>(*this).leave(x);
1353 static_cast<Derived&
>(*this).enter(x);
1355 static_cast<Derived&
>(*this).leave(x);
1363 static_cast<Derived&
>(*this).enter(x);
1365 static_cast<Derived&
>(*this).leave(x);
1373 static_cast<Derived&
>(*this).enter(x);
1375 static_cast<Derived&
>(*this).leave(x);
1383 static_cast<Derived&
>(*this).enter(x);
1385 static_cast<Derived&
>(*this).leave(x);
1393 static_cast<Derived&
>(*this).enter(x);
1395 static_cast<Derived&
>(*this).leave(x);
1402 static_cast<Derived&
>(*this).enter(x);
1404 static_cast<Derived&
>(*this).leave(x);
1411 static_cast<Derived&
>(*this).enter(x);
1413 static_cast<Derived&
>(*this).leave(x);
1420 static_cast<Derived&
>(*this).enter(x);
1422 static_cast<Derived&
>(*this).leave(x);
1427 static_cast<Derived&
>(*this).enter(x);
1429 static_cast<Derived&
>(*this).apply(result_action_labels, x.
action_labels());
1432 static_cast<Derived&
>(*this).apply(result_formula, x.
formula());
1434 static_cast<Derived&
>(*this).leave(x);
1441 static_cast<Derived&
>(*this).enter(x);
1444 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
1448 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
1452 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::true_>(x));
1456 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::false_>(x));
1460 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::not_>(x));
1464 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::minus>(x));
1468 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::and_>(x));
1472 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::or_>(x));
1476 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::imp>(x));
1480 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::plus>(x));
1484 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply>(x));
1488 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply_alt>(x));
1492 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::forall>(x));
1496 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::exists>(x));
1500 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::infimum>(x));
1504 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::supremum>(x));
1508 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::sum>(x));
1512 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::must>(x));
1516 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::may>(x));
1520 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled>(x));
1524 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled_timed>(x));
1528 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay>(x));
1532 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay_timed>(x));
1536 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::variable>(x));
1540 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::nu>(x));
1544 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::mu>(x));
1546 static_cast<Derived&
>(*this).leave(x);
1552template <
typename Derived>
1559template <
template <
class>
class Builder,
class Derived>
1565 using super::update;
1573 static_cast<Derived&
>(*this).enter(x);
1575 static_cast<Derived&
>(*this).leave(x);
1584 static_cast<Derived&
>(*this).enter(x);
1586 static_cast<Derived&
>(*this).leave(x);
1594 static_cast<Derived&
>(*this).enter(x);
1596 static_cast<Derived&
>(*this).leave(x);
1603 static_cast<Derived&
>(*this).enter(x);
1605 static_cast<Derived&
>(*this).leave(x);
1612 static_cast<Derived&
>(*this).enter(x);
1614 static_cast<Derived&
>(*this).leave(x);
1621 static_cast<Derived&
>(*this).enter(x);
1623 static_cast<Derived&
>(*this).leave(x);
1630 static_cast<Derived&
>(*this).enter(x);
1632 static_cast<Derived&
>(*this).leave(x);
1639 static_cast<Derived&
>(*this).enter(x);
1641 static_cast<Derived&
>(*this).leave(x);
1648 static_cast<Derived&
>(*this).enter(x);
1650 static_cast<Derived&
>(*this).leave(x);
1657 static_cast<Derived&
>(*this).enter(x);
1659 static_cast<Derived&
>(*this).leave(x);
1666 static_cast<Derived&
>(*this).enter(x);
1668 static_cast<Derived&
>(*this).leave(x);
1675 static_cast<Derived&
>(*this).enter(x);
1677 static_cast<Derived&
>(*this).leave(x);
1684 static_cast<Derived&
>(*this).enter(x);
1686 static_cast<Derived&
>(*this).leave(x);
1693 static_cast<Derived&
>(*this).enter(x);
1695 static_cast<Derived&
>(*this).leave(x);
1702 static_cast<Derived&
>(*this).enter(x);
1704 static_cast<Derived&
>(*this).leave(x);
1711 static_cast<Derived&
>(*this).enter(x);
1713 static_cast<Derived&
>(*this).leave(x);
1720 static_cast<Derived&
>(*this).enter(x);
1722 static_cast<Derived&
>(*this).leave(x);
1730 static_cast<Derived&
>(*this).enter(x);
1732 static_cast<Derived&
>(*this).leave(x);
1740 static_cast<Derived&
>(*this).enter(x);
1742 static_cast<Derived&
>(*this).leave(x);
1750 static_cast<Derived&
>(*this).enter(x);
1752 static_cast<Derived&
>(*this).leave(x);
1760 static_cast<Derived&
>(*this).enter(x);
1762 static_cast<Derived&
>(*this).leave(x);
1769 static_cast<Derived&
>(*this).enter(x);
1771 static_cast<Derived&
>(*this).leave(x);
1778 static_cast<Derived&
>(*this).enter(x);
1780 static_cast<Derived&
>(*this).leave(x);
1787 static_cast<Derived&
>(*this).enter(x);
1789 static_cast<Derived&
>(*this).leave(x);
1794 static_cast<Derived&
>(*this).enter(x);
1796 static_cast<Derived&
>(*this).apply(result_formula, x.
formula());
1798 static_cast<Derived&
>(*this).leave(x);
1805 static_cast<Derived&
>(*this).enter(x);
1808 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
1812 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
1816 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::true_>(x));
1820 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::false_>(x));
1824 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::not_>(x));
1828 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::minus>(x));
1832 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::and_>(x));
1836 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::or_>(x));
1840 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::imp>(x));
1844 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::plus>(x));
1848 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply>(x));
1852 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply_alt>(x));
1856 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::forall>(x));
1860 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::exists>(x));
1864 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::infimum>(x));
1868 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::supremum>(x));
1872 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::sum>(x));
1876 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::must>(x));
1880 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::may>(x));
1884 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled>(x));
1888 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled_timed>(x));
1892 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay>(x));
1896 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay_timed>(x));
1900 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::variable>(x));
1904 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::nu>(x));
1908 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::mu>(x));
1910 static_cast<Derived&
>(*this).leave(x);
1916template <
typename Derived>
1923template <
template <
class>
class Builder,
class Derived>
1929 using super::update;
1937 static_cast<Derived&
>(*this).enter(x);
1939 static_cast<Derived&
>(*this).leave(x);
1948 static_cast<Derived&
>(*this).enter(x);
1950 static_cast<Derived&
>(*this).leave(x);
1958 static_cast<Derived&
>(*this).enter(x);
1960 static_cast<Derived&
>(*this).leave(x);
1967 static_cast<Derived&
>(*this).enter(x);
1969 static_cast<Derived&
>(*this).leave(x);
1976 static_cast<Derived&
>(*this).enter(x);
1978 static_cast<Derived&
>(*this).leave(x);
1985 static_cast<Derived&
>(*this).enter(x);
1987 static_cast<Derived&
>(*this).leave(x);
1994 static_cast<Derived&
>(*this).enter(x);
1996 static_cast<Derived&
>(*this).leave(x);
2003 static_cast<Derived&
>(*this).enter(x);
2005 static_cast<Derived&
>(*this).leave(x);
2012 static_cast<Derived&
>(*this).enter(x);
2014 static_cast<Derived&
>(*this).leave(x);
2021 static_cast<Derived&
>(*this).enter(x);
2023 static_cast<Derived&
>(*this).leave(x);
2030 static_cast<Derived&
>(*this).enter(x);
2032 static_cast<Derived&
>(*this).leave(x);
2039 static_cast<Derived&
>(*this).enter(x);
2041 static_cast<Derived&
>(*this).leave(x);
2048 static_cast<Derived&
>(*this).enter(x);
2050 static_cast<Derived&
>(*this).leave(x);
2057 static_cast<Derived&
>(*this).enter(x);
2059 static_cast<Derived&
>(*this).leave(x);
2066 static_cast<Derived&
>(*this).enter(x);
2068 static_cast<Derived&
>(*this).leave(x);
2075 static_cast<Derived&
>(*this).enter(x);
2077 static_cast<Derived&
>(*this).leave(x);
2084 static_cast<Derived&
>(*this).enter(x);
2086 static_cast<Derived&
>(*this).leave(x);
2094 static_cast<Derived&
>(*this).enter(x);
2096 static_cast<Derived&
>(*this).leave(x);
2104 static_cast<Derived&
>(*this).enter(x);
2106 static_cast<Derived&
>(*this).leave(x);
2114 static_cast<Derived&
>(*this).enter(x);
2116 static_cast<Derived&
>(*this).leave(x);
2124 static_cast<Derived&
>(*this).enter(x);
2126 static_cast<Derived&
>(*this).leave(x);
2133 static_cast<Derived&
>(*this).enter(x);
2135 static_cast<Derived&
>(*this).leave(x);
2142 static_cast<Derived&
>(*this).enter(x);
2144 static_cast<Derived&
>(*this).leave(x);
2151 static_cast<Derived&
>(*this).enter(x);
2153 static_cast<Derived&
>(*this).leave(x);
2158 static_cast<Derived&
>(*this).enter(x);
2160 static_cast<Derived&
>(*this).apply(result_formula, x.
formula());
2162 static_cast<Derived&
>(*this).leave(x);
2169 static_cast<Derived&
>(*this).enter(x);
2172 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
2176 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
2180 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::true_>(x));
2184 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::false_>(x));
2188 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::not_>(x));
2192 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::minus>(x));
2196 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::and_>(x));
2200 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::or_>(x));
2204 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::imp>(x));
2208 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::plus>(x));
2212 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply>(x));
2216 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply_alt>(x));
2220 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::forall>(x));
2224 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::exists>(x));
2228 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::infimum>(x));
2232 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::supremum>(x));
2236 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::sum>(x));
2240 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::must>(x));
2244 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::may>(x));
2248 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled>(x));
2252 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled_timed>(x));
2256 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay>(x));
2260 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay_timed>(x));
2264 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::variable>(x));
2268 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::nu>(x));
2272 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::mu>(x));
2274 static_cast<Derived&
>(*this).leave(x);
2280template <
typename Derived>
2287template <
template <
class>
class Builder,
class Derived>
2293 using super::update;
2301 static_cast<Derived&
>(*this).enter(x);
2303 static_cast<Derived&
>(*this).leave(x);
2312 static_cast<Derived&
>(*this).enter(x);
2314 static_cast<Derived&
>(*this).leave(x);
2322 static_cast<Derived&
>(*this).enter(x);
2324 static_cast<Derived&
>(*this).leave(x);
2331 static_cast<Derived&
>(*this).enter(x);
2333 static_cast<Derived&
>(*this).leave(x);
2340 static_cast<Derived&
>(*this).enter(x);
2342 static_cast<Derived&
>(*this).leave(x);
2349 static_cast<Derived&
>(*this).enter(x);
2351 static_cast<Derived&
>(*this).leave(x);
2358 static_cast<Derived&
>(*this).enter(x);
2360 static_cast<Derived&
>(*this).leave(x);
2367 static_cast<Derived&
>(*this).enter(x);
2369 static_cast<Derived&
>(*this).leave(x);
2376 static_cast<Derived&
>(*this).enter(x);
2378 static_cast<Derived&
>(*this).leave(x);
2385 static_cast<Derived&
>(*this).enter(x);
2387 static_cast<Derived&
>(*this).leave(x);
2394 static_cast<Derived&
>(*this).enter(x);
2396 static_cast<Derived&
>(*this).leave(x);
2403 static_cast<Derived&
>(*this).enter(x);
2405 static_cast<Derived&
>(*this).leave(x);
2412 static_cast<Derived&
>(*this).enter(x);
2414 static_cast<Derived&
>(*this).leave(x);
2421 static_cast<Derived&
>(*this).enter(x);
2423 static_cast<Derived&
>(*this).leave(x);
2430 static_cast<Derived&
>(*this).enter(x);
2432 static_cast<Derived&
>(*this).leave(x);
2439 static_cast<Derived&
>(*this).enter(x);
2441 static_cast<Derived&
>(*this).leave(x);
2448 static_cast<Derived&
>(*this).enter(x);
2450 static_cast<Derived&
>(*this).leave(x);
2458 static_cast<Derived&
>(*this).enter(x);
2460 static_cast<Derived&
>(*this).leave(x);
2469 static_cast<Derived&
>(*this).enter(x);
2471 static_cast<Derived&
>(*this).leave(x);
2480 static_cast<Derived&
>(*this).enter(x);
2482 static_cast<Derived&
>(*this).leave(x);
2491 static_cast<Derived&
>(*this).enter(x);
2493 static_cast<Derived&
>(*this).leave(x);
2502 static_cast<Derived&
>(*this).enter(x);
2504 static_cast<Derived&
>(*this).leave(x);
2512 static_cast<Derived&
>(*this).enter(x);
2514 static_cast<Derived&
>(*this).leave(x);
2521 static_cast<Derived&
>(*this).enter(x);
2523 static_cast<Derived&
>(*this).leave(x);
2528 static_cast<Derived&
>(*this).enter(x);
2530 static_cast<Derived&
>(*this).apply(result_formula, x.
formula());
2532 static_cast<Derived&
>(*this).leave(x);
2539 static_cast<Derived&
>(*this).enter(x);
2542 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::data_expression>(x));
2546 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<data::untyped_data_parameter>(x));
2550 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::true_>(x));
2554 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::false_>(x));
2558 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::not_>(x));
2562 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::minus>(x));
2566 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::and_>(x));
2570 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::or_>(x));
2574 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::imp>(x));
2578 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::plus>(x));
2582 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply>(x));
2586 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::const_multiply_alt>(x));
2590 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::forall>(x));
2594 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::exists>(x));
2598 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::infimum>(x));
2602 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::supremum>(x));
2606 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::sum>(x));
2610 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::must>(x));
2614 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::may>(x));
2618 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled>(x));
2622 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::yaled_timed>(x));
2626 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay>(x));
2630 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::delay_timed>(x));
2634 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::variable>(x));
2638 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::nu>(x));
2642 static_cast<Derived&
>(*this).apply(result, atermpp::down_cast<state_formulas::mu>(x));
2644 static_cast<Derived&
>(*this).leave(x);
2650template <
typename Derived>
add your file description here.
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
bool is_untyped_data_parameter(const atermpp::aterm &x)
bool is_untyped_multi_action(const atermpp::aterm &x)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
expression builder that visits all sub expressions
void apply(atermpp::term_list< T > &result, const atermpp::term_list< U > &x)