mCRL2
Loading...
Searching...
No Matches
set1.h
Go to the documentation of this file.
1// Author(s): Jeroen Keiren
2// Copyright: see the accompanying file COPYING or copy at
3// https://github.com/mCRL2org/mCRL2/blob/master/COPYING
4//
5// Distributed under the Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
9/// \file mcrl2/data/set.h
10/// \brief The standard sort set_.
11///
12/// This file was generated from the data sort specification
13/// mcrl2/data/build/set.spec.
14
15#ifndef MCRL2_DATA_SET1_H
16#define MCRL2_DATA_SET1_H
17
18#include "functional" // std::function
19#include "mcrl2/utilities/exception.h"
20#include "mcrl2/data/basic_sort.h"
21#include "mcrl2/data/function_sort.h"
22#include "mcrl2/data/function_symbol.h"
23#include "mcrl2/data/application.h"
24#include "mcrl2/data/data_equation.h"
25#include "mcrl2/data/standard.h"
26#include "mcrl2/data/forall.h"
27#include "mcrl2/data/container_sort.h"
28#include "mcrl2/data/bool.h"
29#include "mcrl2/data/fset1.h"
30
31/// \brief Namespace for system defined sort set_.
32namespace mcrl2::data::sort_set
33{
34
35 /// \brief Constructor for sort expression Set(S)
36 /// \param s A sort expression
37 /// \return Sort expression set_(s)
38 inline
40 {
42 return set_;
43 }
44
45 /// \brief Recogniser for sort expression Set(s)
46 /// \param e A sort expression
47 /// \return true iff e is a container sort of which the name matches
48 /// set_
49 inline
50 bool is_set(const sort_expression& e)
51 {
53 {
55 }
56 return false;
57 }
58
59
60 /// \brief Generate identifier \@set.
61 /// \return Identifier \@set.
62 inline
63 const core::identifier_string& constructor_name()
64 {
65 static core::identifier_string constructor_name = core::identifier_string("@set");
66 return constructor_name;
67 }
68
69 /// \brief Constructor for function symbol \@set.
70 /// \param s A sort expression.
71 /// \return Function symbol constructor.
72 inline
74 {
76 return constructor;
77 }
78
79 /// \brief Recogniser for function \@set.
80 /// \param e A data expression.
81 /// \return true iff e is the function symbol matching \@set.
82 inline
84 {
86 {
87 return atermpp::down_cast<function_symbol>(e).name() == constructor_name();
88 }
89 return false;
90 }
91
92 /// \brief Application of function symbol \@set.
93 /// \param[in] s A sort expression.
94 /// \param[in] arg0 A data expression.
95 /// \param[in] arg1 A data expression.
96 /// \return Application of \@set to a number of arguments.
97 inline
98 application constructor(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
99 {
100 return sort_set::constructor(s)(arg0, arg1);
101 }
102
103 /// \brief Make an application of function symbol \@set.
104 /// \param[out] result The data expression where the \@set expression is put.
105 /// \param[in] s A sort expression.
106 /// \param[in] arg0 A data expression.
107 /// \param[in] arg1 A data expression.
108 inline
109 void make_constructor(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
110 {
111 make_application(result, sort_set::constructor(s),arg0, arg1);
112 }
113
114 /// \brief Recogniser for application of \@set.
115 /// \param e A data expression.
116 /// \return true iff e is an application of function symbol constructor to a
117 /// number of arguments.
118 inline
120 {
121 return is_application(e) && is_constructor_function_symbol(atermpp::down_cast<application>(e).head());
122 }
123 /// \brief Give all system defined constructors for set_.
124 /// \param s A sort expression.
125 /// \return All system defined constructors for set_.
126 inline
128 {
129 function_symbol_vector result;
130 result.push_back(sort_set::constructor(s));
131
132 return result;
133 }
134 /// \brief Give all defined constructors which can be used in mCRL2 specs for set_.
135 /// \param s A sort expression.
136 /// \return All system defined constructors that can be used in an mCRL2 specification for set_.
137 inline
139 {
140 function_symbol_vector result;
141 result.push_back(sort_set::constructor(s));
142
143 return result;
144 }
145 // The typedef is the sort that maps a function symbol to an function that rewrites it as well as a string of a function that can be used to implement it
147 /// \brief Give all system defined constructors which have an implementation in C++ and not in rewrite rules for set_.
148 /// \param s A sort expression.
149 /// \return All system defined constructors that are to be implemented in C++ for set_.
150 inline
152 {
153 implementation_map result;
154 return result;
155 }
156
157 /// \brief Generate identifier \@setfset.
158 /// \return Identifier \@setfset.
159 inline
160 const core::identifier_string& set_fset_name()
161 {
162 static core::identifier_string set_fset_name = core::identifier_string("@setfset");
163 return set_fset_name;
164 }
165
166 /// \brief Constructor for function symbol \@setfset.
167 /// \param s A sort expression.
168 /// \return Function symbol set_fset.
169 inline
171 {
173 return set_fset;
174 }
175
176 /// \brief Recogniser for function \@setfset.
177 /// \param e A data expression.
178 /// \return true iff e is the function symbol matching \@setfset.
179 inline
181 {
183 {
184 return atermpp::down_cast<function_symbol>(e).name() == set_fset_name();
185 }
186 return false;
187 }
188
189 /// \brief Application of function symbol \@setfset.
190 /// \param[in] s A sort expression.
191 /// \param[in] arg0 A data expression.
192 /// \return Application of \@setfset to a number of arguments.
193 inline
194 application set_fset(const sort_expression& s, const data_expression& arg0)
195 {
196 return sort_set::set_fset(s)(arg0);
197 }
198
199 /// \brief Make an application of function symbol \@setfset.
200 /// \param[out] result The data expression where the \@setfset expression is put.
201 /// \param[in] s A sort expression.
202 /// \param[in] arg0 A data expression.
203 inline
205 {
206 make_application(result, sort_set::set_fset(s),arg0);
207 }
208
209 /// \brief Recogniser for application of \@setfset.
210 /// \param e A data expression.
211 /// \return true iff e is an application of function symbol set_fset to a
212 /// number of arguments.
213 inline
215 {
216 return is_application(e) && is_set_fset_function_symbol(atermpp::down_cast<application>(e).head());
217 }
218
219 /// \brief Generate identifier \@setcomp.
220 /// \return Identifier \@setcomp.
221 inline
222 const core::identifier_string& set_comprehension_name()
223 {
224 static core::identifier_string set_comprehension_name = core::identifier_string("@setcomp");
225 return set_comprehension_name;
226 }
227
228 /// \brief Constructor for function symbol \@setcomp.
229 /// \param s A sort expression.
230 /// \return Function symbol set_comprehension.
231 inline
233 {
235 return set_comprehension;
236 }
237
238 /// \brief Recogniser for function \@setcomp.
239 /// \param e A data expression.
240 /// \return true iff e is the function symbol matching \@setcomp.
241 inline
243 {
245 {
246 return atermpp::down_cast<function_symbol>(e).name() == set_comprehension_name();
247 }
248 return false;
249 }
250
251 /// \brief Application of function symbol \@setcomp.
252 /// \param[in] s A sort expression.
253 /// \param[in] arg0 A data expression.
254 /// \return Application of \@setcomp to a number of arguments.
255 inline
256 application set_comprehension(const sort_expression& s, const data_expression& arg0)
257 {
259 }
260
261 /// \brief Make an application of function symbol \@setcomp.
262 /// \param[out] result The data expression where the \@setcomp expression is put.
263 /// \param[in] s A sort expression.
264 /// \param[in] arg0 A data expression.
265 inline
267 {
268 make_application(result, sort_set::set_comprehension(s),arg0);
269 }
270
271 /// \brief Recogniser for application of \@setcomp.
272 /// \param e A data expression.
273 /// \return true iff e is an application of function symbol set_comprehension to a
274 /// number of arguments.
275 inline
277 {
278 return is_application(e) && is_set_comprehension_function_symbol(atermpp::down_cast<application>(e).head());
279 }
280
281 /// \brief Generate identifier in.
282 /// \return Identifier in.
283 inline
284 const core::identifier_string& in_name()
285 {
286 static core::identifier_string in_name = core::identifier_string("in");
287 return in_name;
288 }
289
290 // This function is not intended for public use and therefore not documented in Doxygen.
291 inline
293 {
296 return in;
297 }
298
299 /// \brief Recogniser for function in.
300 /// \param e A data expression.
301 /// \return true iff e is the function symbol matching in.
302 inline
304 {
306 {
307 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
308 return f.name() == in_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2;
309 }
310 return false;
311 }
312
313 /// \brief Application of function symbol in.
314 /// \param[in] s A sort expression.
315 /// \param[in] arg0 A data expression.
316 /// \param[in] arg1 A data expression.
317 /// \return Application of in to a number of arguments.
318 inline
319 application in(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
320 {
321 return sort_set::in(s, arg0.sort(), arg1.sort())(arg0, arg1);
322 }
323
324 /// \brief Make an application of function symbol in.
325 /// \param[out] result The data expression where the in expression is put.
326 /// \param[in] s A sort expression.
327 /// \param[in] arg0 A data expression.
328 /// \param[in] arg1 A data expression.
329 inline
330 void make_in(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
331 {
332 make_application(result, sort_set::in(s, arg0.sort(), arg1.sort()),arg0, arg1);
333 }
334
335 /// \brief Recogniser for application of in.
336 /// \param e A data expression.
337 /// \return true iff e is an application of function symbol in to a
338 /// number of arguments.
339 inline
341 {
342 return is_application(e) && is_in_function_symbol(atermpp::down_cast<application>(e).head());
343 }
344
345 /// \brief Generate identifier !.
346 /// \return Identifier !.
347 inline
348 const core::identifier_string& complement_name()
349 {
350 static core::identifier_string complement_name = core::identifier_string("!");
351 return complement_name;
352 }
353
354 /// \brief Constructor for function symbol !.
355 /// \param s A sort expression.
356 /// \return Function symbol complement.
357 inline
359 {
361 return complement;
362 }
363
364 /// \brief Recogniser for function !.
365 /// \param e A data expression.
366 /// \return true iff e is the function symbol matching !.
367 inline
369 {
371 {
372 return atermpp::down_cast<function_symbol>(e).name() == complement_name();
373 }
374 return false;
375 }
376
377 /// \brief Application of function symbol !.
378 /// \param[in] s A sort expression.
379 /// \param[in] arg0 A data expression.
380 /// \return Application of ! to a number of arguments.
381 inline
382 application complement(const sort_expression& s, const data_expression& arg0)
383 {
384 return sort_set::complement(s)(arg0);
385 }
386
387 /// \brief Make an application of function symbol !.
388 /// \param[out] result The data expression where the ! expression is put.
389 /// \param[in] s A sort expression.
390 /// \param[in] arg0 A data expression.
391 inline
393 {
394 make_application(result, sort_set::complement(s),arg0);
395 }
396
397 /// \brief Recogniser for application of !.
398 /// \param e A data expression.
399 /// \return true iff e is an application of function symbol complement to a
400 /// number of arguments.
401 inline
403 {
404 return is_application(e) && is_complement_function_symbol(atermpp::down_cast<application>(e).head());
405 }
406
407 /// \brief Generate identifier +.
408 /// \return Identifier +.
409 inline
410 const core::identifier_string& union_name()
411 {
412 static core::identifier_string union_name = core::identifier_string("+");
413 return union_name;
414 }
415
416 // This function is not intended for public use and therefore not documented in Doxygen.
417 inline
419 {
420 sort_expression target_sort;
421 if (s0 == set_(s) && s1 == set_(s))
422 {
423 target_sort = set_(s);
424 }
425 else if (s0 == sort_fset::fset(s) && s1 == sort_fset::fset(s))
426 {
427 target_sort = sort_fset::fset(s);
428 }
429 else
430 {
431 throw mcrl2::runtime_error("Cannot compute target sort for union_ with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
432 }
433
435 return union_;
436 }
437
438 /// \brief Recogniser for function +.
439 /// \param e A data expression.
440 /// \return true iff e is the function symbol matching +.
441 inline
443 {
445 {
446 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
447 return f.name() == union_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2;
448 }
449 return false;
450 }
451
452 /// \brief Application of function symbol +.
453 /// \param[in] s A sort expression.
454 /// \param[in] arg0 A data expression.
455 /// \param[in] arg1 A data expression.
456 /// \return Application of + to a number of arguments.
457 inline
458 application union_(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
459 {
460 return sort_set::union_(s, arg0.sort(), arg1.sort())(arg0, arg1);
461 }
462
463 /// \brief Make an application of function symbol +.
464 /// \param[out] result The data expression where the + expression is put.
465 /// \param[in] s A sort expression.
466 /// \param[in] arg0 A data expression.
467 /// \param[in] arg1 A data expression.
468 inline
469 void make_union(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
470 {
471 make_application(result, sort_set::union_(s, arg0.sort(), arg1.sort()),arg0, arg1);
472 }
473
474 /// \brief Recogniser for application of +.
475 /// \param e A data expression.
476 /// \return true iff e is an application of function symbol union_ to a
477 /// number of arguments.
478 inline
480 {
481 return is_application(e) && is_union_function_symbol(atermpp::down_cast<application>(e).head());
482 }
483
484 /// \brief Generate identifier *.
485 /// \return Identifier *.
486 inline
487 const core::identifier_string& intersection_name()
488 {
489 static core::identifier_string intersection_name = core::identifier_string("*");
490 return intersection_name;
491 }
492
493 // This function is not intended for public use and therefore not documented in Doxygen.
494 inline
496 {
497 sort_expression target_sort;
498 if (s0 == set_(s) && s1 == set_(s))
499 {
500 target_sort = set_(s);
501 }
502 else if (s0 == sort_fset::fset(s) && s1 == set_(s))
503 {
504 target_sort = sort_fset::fset(s);
505 }
506 else if (s0 == set_(s) && s1 == sort_fset::fset(s))
507 {
508 target_sort = sort_fset::fset(s);
509 }
510 else if (s0 == sort_fset::fset(s) && s1 == sort_fset::fset(s))
511 {
512 target_sort = sort_fset::fset(s);
513 }
514 else
515 {
516 throw mcrl2::runtime_error("Cannot compute target sort for intersection with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
517 }
518
520 return intersection;
521 }
522
523 /// \brief Recogniser for function *.
524 /// \param e A data expression.
525 /// \return true iff e is the function symbol matching *.
526 inline
528 {
530 {
531 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
532 return f.name() == intersection_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2;
533 }
534 return false;
535 }
536
537 /// \brief Application of function symbol *.
538 /// \param[in] s A sort expression.
539 /// \param[in] arg0 A data expression.
540 /// \param[in] arg1 A data expression.
541 /// \return Application of * to a number of arguments.
542 inline
543 application intersection(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
544 {
546 }
547
548 /// \brief Make an application of function symbol *.
549 /// \param[out] result The data expression where the * expression is put.
550 /// \param[in] s A sort expression.
551 /// \param[in] arg0 A data expression.
552 /// \param[in] arg1 A data expression.
553 inline
554 void make_intersection(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
555 {
556 make_application(result, sort_set::intersection(s, arg0.sort(), arg1.sort()),arg0, arg1);
557 }
558
559 /// \brief Recogniser for application of *.
560 /// \param e A data expression.
561 /// \return true iff e is an application of function symbol intersection to a
562 /// number of arguments.
563 inline
565 {
566 return is_application(e) && is_intersection_function_symbol(atermpp::down_cast<application>(e).head());
567 }
568
569 /// \brief Generate identifier -.
570 /// \return Identifier -.
571 inline
572 const core::identifier_string& difference_name()
573 {
574 static core::identifier_string difference_name = core::identifier_string("-");
575 return difference_name;
576 }
577
578 // This function is not intended for public use and therefore not documented in Doxygen.
579 inline
581 {
582 sort_expression target_sort;
583 if (s0 == set_(s) && s1 == set_(s))
584 {
585 target_sort = set_(s);
586 }
587 else if (s0 == sort_fset::fset(s) && s1 == set_(s))
588 {
589 target_sort = sort_fset::fset(s);
590 }
591 else if (s0 == sort_fset::fset(s) && s1 == sort_fset::fset(s))
592 {
593 target_sort = sort_fset::fset(s);
594 }
595 else
596 {
597 throw mcrl2::runtime_error("Cannot compute target sort for difference with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
598 }
599
601 return difference;
602 }
603
604 /// \brief Recogniser for function -.
605 /// \param e A data expression.
606 /// \return true iff e is the function symbol matching -.
607 inline
609 {
611 {
612 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
613 return f.name() == difference_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2;
614 }
615 return false;
616 }
617
618 /// \brief Application of function symbol -.
619 /// \param[in] s A sort expression.
620 /// \param[in] arg0 A data expression.
621 /// \param[in] arg1 A data expression.
622 /// \return Application of - to a number of arguments.
623 inline
624 application difference(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
625 {
627 }
628
629 /// \brief Make an application of function symbol -.
630 /// \param[out] result The data expression where the - expression is put.
631 /// \param[in] s A sort expression.
632 /// \param[in] arg0 A data expression.
633 /// \param[in] arg1 A data expression.
634 inline
635 void make_difference(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
636 {
637 make_application(result, sort_set::difference(s, arg0.sort(), arg1.sort()),arg0, arg1);
638 }
639
640 /// \brief Recogniser for application of -.
641 /// \param e A data expression.
642 /// \return true iff e is an application of function symbol difference to a
643 /// number of arguments.
644 inline
646 {
647 return is_application(e) && is_difference_function_symbol(atermpp::down_cast<application>(e).head());
648 }
649
650 /// \brief Generate identifier \@false_.
651 /// \return Identifier \@false_.
652 inline
653 const core::identifier_string& false_function_name()
654 {
655 static core::identifier_string false_function_name = core::identifier_string("@false_");
656 return false_function_name;
657 }
658
659 /// \brief Constructor for function symbol \@false_.
660 /// \param s A sort expression.
661 /// \return Function symbol false_function.
662 inline
664 {
666 return false_function;
667 }
668
669 /// \brief Recogniser for function \@false_.
670 /// \param e A data expression.
671 /// \return true iff e is the function symbol matching \@false_.
672 inline
674 {
676 {
677 return atermpp::down_cast<function_symbol>(e).name() == false_function_name();
678 }
679 return false;
680 }
681
682 /// \brief Application of function symbol \@false_.
683 /// \param[in] s A sort expression.
684 /// \param[in] arg0 A data expression.
685 /// \return Application of \@false_ to a number of arguments.
686 inline
687 application false_function(const sort_expression& s, const data_expression& arg0)
688 {
690 }
691
692 /// \brief Make an application of function symbol \@false_.
693 /// \param[out] result The data expression where the \@false_ expression is put.
694 /// \param[in] s A sort expression.
695 /// \param[in] arg0 A data expression.
696 inline
698 {
699 make_application(result, sort_set::false_function(s),arg0);
700 }
701
702 /// \brief Recogniser for application of \@false_.
703 /// \param e A data expression.
704 /// \return true iff e is an application of function symbol false_function to a
705 /// number of arguments.
706 inline
708 {
709 return is_application(e) && is_false_function_function_symbol(atermpp::down_cast<application>(e).head());
710 }
711
712 /// \brief Generate identifier \@true_.
713 /// \return Identifier \@true_.
714 inline
715 const core::identifier_string& true_function_name()
716 {
717 static core::identifier_string true_function_name = core::identifier_string("@true_");
718 return true_function_name;
719 }
720
721 /// \brief Constructor for function symbol \@true_.
722 /// \param s A sort expression.
723 /// \return Function symbol true_function.
724 inline
726 {
728 return true_function;
729 }
730
731 /// \brief Recogniser for function \@true_.
732 /// \param e A data expression.
733 /// \return true iff e is the function symbol matching \@true_.
734 inline
736 {
738 {
739 return atermpp::down_cast<function_symbol>(e).name() == true_function_name();
740 }
741 return false;
742 }
743
744 /// \brief Application of function symbol \@true_.
745 /// \param[in] s A sort expression.
746 /// \param[in] arg0 A data expression.
747 /// \return Application of \@true_ to a number of arguments.
748 inline
749 application true_function(const sort_expression& s, const data_expression& arg0)
750 {
751 return sort_set::true_function(s)(arg0);
752 }
753
754 /// \brief Make an application of function symbol \@true_.
755 /// \param[out] result The data expression where the \@true_ expression is put.
756 /// \param[in] s A sort expression.
757 /// \param[in] arg0 A data expression.
758 inline
760 {
761 make_application(result, sort_set::true_function(s),arg0);
762 }
763
764 /// \brief Recogniser for application of \@true_.
765 /// \param e A data expression.
766 /// \return true iff e is an application of function symbol true_function to a
767 /// number of arguments.
768 inline
770 {
771 return is_application(e) && is_true_function_function_symbol(atermpp::down_cast<application>(e).head());
772 }
773
774 /// \brief Generate identifier \@not_.
775 /// \return Identifier \@not_.
776 inline
777 const core::identifier_string& not_function_name()
778 {
779 static core::identifier_string not_function_name = core::identifier_string("@not_");
780 return not_function_name;
781 }
782
783 /// \brief Constructor for function symbol \@not_.
784 /// \param s A sort expression.
785 /// \return Function symbol not_function.
786 inline
788 {
790 return not_function;
791 }
792
793 /// \brief Recogniser for function \@not_.
794 /// \param e A data expression.
795 /// \return true iff e is the function symbol matching \@not_.
796 inline
798 {
800 {
801 return atermpp::down_cast<function_symbol>(e).name() == not_function_name();
802 }
803 return false;
804 }
805
806 /// \brief Application of function symbol \@not_.
807 /// \param[in] s A sort expression.
808 /// \param[in] arg0 A data expression.
809 /// \return Application of \@not_ to a number of arguments.
810 inline
811 application not_function(const sort_expression& s, const data_expression& arg0)
812 {
813 return sort_set::not_function(s)(arg0);
814 }
815
816 /// \brief Make an application of function symbol \@not_.
817 /// \param[out] result The data expression where the \@not_ expression is put.
818 /// \param[in] s A sort expression.
819 /// \param[in] arg0 A data expression.
820 inline
822 {
823 make_application(result, sort_set::not_function(s),arg0);
824 }
825
826 /// \brief Recogniser for application of \@not_.
827 /// \param e A data expression.
828 /// \return true iff e is an application of function symbol not_function to a
829 /// number of arguments.
830 inline
832 {
833 return is_application(e) && is_not_function_function_symbol(atermpp::down_cast<application>(e).head());
834 }
835
836 /// \brief Generate identifier \@and_.
837 /// \return Identifier \@and_.
838 inline
839 const core::identifier_string& and_function_name()
840 {
841 static core::identifier_string and_function_name = core::identifier_string("@and_");
842 return and_function_name;
843 }
844
845 /// \brief Constructor for function symbol \@and_.
846 /// \param s A sort expression.
847 /// \return Function symbol and_function.
848 inline
850 {
852 return and_function;
853 }
854
855 /// \brief Recogniser for function \@and_.
856 /// \param e A data expression.
857 /// \return true iff e is the function symbol matching \@and_.
858 inline
860 {
862 {
863 return atermpp::down_cast<function_symbol>(e).name() == and_function_name();
864 }
865 return false;
866 }
867
868 /// \brief Application of function symbol \@and_.
869 /// \param[in] s A sort expression.
870 /// \param[in] arg0 A data expression.
871 /// \param[in] arg1 A data expression.
872 /// \return Application of \@and_ to a number of arguments.
873 inline
874 application and_function(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
875 {
876 return sort_set::and_function(s)(arg0, arg1);
877 }
878
879 /// \brief Make an application of function symbol \@and_.
880 /// \param[out] result The data expression where the \@and_ expression is put.
881 /// \param[in] s A sort expression.
882 /// \param[in] arg0 A data expression.
883 /// \param[in] arg1 A data expression.
884 inline
885 void make_and_function(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
886 {
887 make_application(result, sort_set::and_function(s),arg0, arg1);
888 }
889
890 /// \brief Recogniser for application of \@and_.
891 /// \param e A data expression.
892 /// \return true iff e is an application of function symbol and_function to a
893 /// number of arguments.
894 inline
896 {
897 return is_application(e) && is_and_function_function_symbol(atermpp::down_cast<application>(e).head());
898 }
899
900 /// \brief Generate identifier \@or_.
901 /// \return Identifier \@or_.
902 inline
903 const core::identifier_string& or_function_name()
904 {
905 static core::identifier_string or_function_name = core::identifier_string("@or_");
906 return or_function_name;
907 }
908
909 /// \brief Constructor for function symbol \@or_.
910 /// \param s A sort expression.
911 /// \return Function symbol or_function.
912 inline
914 {
916 return or_function;
917 }
918
919 /// \brief Recogniser for function \@or_.
920 /// \param e A data expression.
921 /// \return true iff e is the function symbol matching \@or_.
922 inline
924 {
926 {
927 return atermpp::down_cast<function_symbol>(e).name() == or_function_name();
928 }
929 return false;
930 }
931
932 /// \brief Application of function symbol \@or_.
933 /// \param[in] s A sort expression.
934 /// \param[in] arg0 A data expression.
935 /// \param[in] arg1 A data expression.
936 /// \return Application of \@or_ to a number of arguments.
937 inline
938 application or_function(const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
939 {
940 return sort_set::or_function(s)(arg0, arg1);
941 }
942
943 /// \brief Make an application of function symbol \@or_.
944 /// \param[out] result The data expression where the \@or_ expression is put.
945 /// \param[in] s A sort expression.
946 /// \param[in] arg0 A data expression.
947 /// \param[in] arg1 A data expression.
948 inline
949 void make_or_function(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1)
950 {
951 make_application(result, sort_set::or_function(s),arg0, arg1);
952 }
953
954 /// \brief Recogniser for application of \@or_.
955 /// \param e A data expression.
956 /// \return true iff e is an application of function symbol or_function to a
957 /// number of arguments.
958 inline
960 {
961 return is_application(e) && is_or_function_function_symbol(atermpp::down_cast<application>(e).head());
962 }
963
964 /// \brief Generate identifier \@fset_union.
965 /// \return Identifier \@fset_union.
966 inline
967 const core::identifier_string& fset_union_name()
968 {
969 static core::identifier_string fset_union_name = core::identifier_string("@fset_union");
970 return fset_union_name;
971 }
972
973 /// \brief Constructor for function symbol \@fset_union.
974 /// \param s A sort expression.
975 /// \return Function symbol fset_union.
976 inline
978 {
980 return fset_union;
981 }
982
983 /// \brief Recogniser for function \@fset_union.
984 /// \param e A data expression.
985 /// \return true iff e is the function symbol matching \@fset_union.
986 inline
988 {
990 {
991 return atermpp::down_cast<function_symbol>(e).name() == fset_union_name();
992 }
993 return false;
994 }
995
996 /// \brief Application of function symbol \@fset_union.
997 /// \param[in] s A sort expression.
998 /// \param[in] arg0 A data expression.
999 /// \param[in] arg1 A data expression.
1000 /// \param[in] arg2 A data expression.
1001 /// \param[in] arg3 A data expression.
1002 /// \return Application of \@fset_union to a number of arguments.
1003 inline
1004 application fset_union(const sort_expression& s, const data_expression& arg0, const data_expression& arg1, const data_expression& arg2, const data_expression& arg3)
1005 {
1006 return sort_set::fset_union(s)(arg0, arg1, arg2, arg3);
1007 }
1008
1009 /// \brief Make an application of function symbol \@fset_union.
1010 /// \param[out] result The data expression where the \@fset_union expression is put.
1011 /// \param[in] s A sort expression.
1012 /// \param[in] arg0 A data expression.
1013 /// \param[in] arg1 A data expression.
1014 /// \param[in] arg2 A data expression.
1015 /// \param[in] arg3 A data expression.
1016 inline
1017 void make_fset_union(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1, const data_expression& arg2, const data_expression& arg3)
1018 {
1019 make_application(result, sort_set::fset_union(s),arg0, arg1, arg2, arg3);
1020 }
1021
1022 /// \brief Recogniser for application of \@fset_union.
1023 /// \param e A data expression.
1024 /// \return true iff e is an application of function symbol fset_union to a
1025 /// number of arguments.
1026 inline
1028 {
1029 return is_application(e) && is_fset_union_function_symbol(atermpp::down_cast<application>(e).head());
1030 }
1031
1032 /// \brief Generate identifier \@fset_inter.
1033 /// \return Identifier \@fset_inter.
1034 inline
1035 const core::identifier_string& fset_intersection_name()
1036 {
1037 static core::identifier_string fset_intersection_name = core::identifier_string("@fset_inter");
1038 return fset_intersection_name;
1039 }
1040
1041 /// \brief Constructor for function symbol \@fset_inter.
1042 /// \param s A sort expression.
1043 /// \return Function symbol fset_intersection.
1044 inline
1046 {
1048 return fset_intersection;
1049 }
1050
1051 /// \brief Recogniser for function \@fset_inter.
1052 /// \param e A data expression.
1053 /// \return true iff e is the function symbol matching \@fset_inter.
1054 inline
1056 {
1058 {
1059 return atermpp::down_cast<function_symbol>(e).name() == fset_intersection_name();
1060 }
1061 return false;
1062 }
1063
1064 /// \brief Application of function symbol \@fset_inter.
1065 /// \param[in] s A sort expression.
1066 /// \param[in] arg0 A data expression.
1067 /// \param[in] arg1 A data expression.
1068 /// \param[in] arg2 A data expression.
1069 /// \param[in] arg3 A data expression.
1070 /// \return Application of \@fset_inter to a number of arguments.
1071 inline
1072 application fset_intersection(const sort_expression& s, const data_expression& arg0, const data_expression& arg1, const data_expression& arg2, const data_expression& arg3)
1073 {
1074 return sort_set::fset_intersection(s)(arg0, arg1, arg2, arg3);
1075 }
1076
1077 /// \brief Make an application of function symbol \@fset_inter.
1078 /// \param[out] result The data expression where the \@fset_inter expression is put.
1079 /// \param[in] s A sort expression.
1080 /// \param[in] arg0 A data expression.
1081 /// \param[in] arg1 A data expression.
1082 /// \param[in] arg2 A data expression.
1083 /// \param[in] arg3 A data expression.
1084 inline
1085 void make_fset_intersection(data_expression& result, const sort_expression& s, const data_expression& arg0, const data_expression& arg1, const data_expression& arg2, const data_expression& arg3)
1086 {
1087 make_application(result, sort_set::fset_intersection(s),arg0, arg1, arg2, arg3);
1088 }
1089
1090 /// \brief Recogniser for application of \@fset_inter.
1091 /// \param e A data expression.
1092 /// \return true iff e is an application of function symbol fset_intersection to a
1093 /// number of arguments.
1094 inline
1096 {
1097 return is_application(e) && is_fset_intersection_function_symbol(atermpp::down_cast<application>(e).head());
1098 }
1099 /// \brief Give all system defined mappings for set_
1100 /// \param s A sort expression
1101 /// \return All system defined mappings for set_
1102 inline
1104 {
1105 function_symbol_vector result;
1106 result.push_back(sort_set::set_fset(s));
1107 result.push_back(sort_set::set_comprehension(s));
1108 result.push_back(sort_set::in(s, s, set_(s)));
1109 result.push_back(sort_set::complement(s));
1110 result.push_back(sort_set::union_(s, set_(s), set_(s)));
1111 result.push_back(sort_set::intersection(s, set_(s), set_(s)));
1112 result.push_back(sort_set::intersection(s, sort_fset::fset(s), set_(s)));
1113 result.push_back(sort_set::intersection(s, set_(s), sort_fset::fset(s)));
1114 result.push_back(sort_set::difference(s, set_(s), set_(s)));
1115 result.push_back(sort_set::difference(s, sort_fset::fset(s), set_(s)));
1116 result.push_back(sort_set::false_function(s));
1117 result.push_back(sort_set::true_function(s));
1118 result.push_back(sort_set::not_function(s));
1119 result.push_back(sort_set::and_function(s));
1120 result.push_back(sort_set::or_function(s));
1121 result.push_back(sort_set::fset_union(s));
1122 result.push_back(sort_set::fset_intersection(s));
1123 return result;
1124 }
1125
1126 /// \brief Give all system defined mappings and constructors for set_
1127 /// \param s A sort expression
1128 /// \return All system defined mappings for set_
1129 inline
1131 {
1132 function_symbol_vector result=set_generate_functions_code(s);
1133 for(const function_symbol& f: set_generate_constructors_code(s))
1134 {
1135 result.push_back(f);
1136 }
1137 return result;
1138 }
1139
1140 /// \brief Give all system defined mappings that can be used in mCRL2 specs for set_
1141 /// \param s A sort expression
1142 /// \return All system defined mappings for that can be used in mCRL2 specificationis set_
1143 inline
1145 {
1146 function_symbol_vector result;
1147 result.push_back(sort_set::set_fset(s));
1148 result.push_back(sort_set::set_comprehension(s));
1149 result.push_back(sort_set::in(s, s, set_(s)));
1150 result.push_back(sort_set::complement(s));
1151 result.push_back(sort_set::union_(s, set_(s), set_(s)));
1152 result.push_back(sort_set::intersection(s, set_(s), set_(s)));
1153 result.push_back(sort_set::intersection(s, sort_fset::fset(s), set_(s)));
1154 result.push_back(sort_set::intersection(s, set_(s), sort_fset::fset(s)));
1155 result.push_back(sort_set::difference(s, set_(s), set_(s)));
1156 result.push_back(sort_set::difference(s, sort_fset::fset(s), set_(s)));
1157 result.push_back(sort_set::false_function(s));
1158 result.push_back(sort_set::true_function(s));
1159 result.push_back(sort_set::not_function(s));
1160 result.push_back(sort_set::and_function(s));
1161 result.push_back(sort_set::or_function(s));
1162 result.push_back(sort_set::fset_union(s));
1163 result.push_back(sort_set::fset_intersection(s));
1164 return result;
1165 }
1166
1167
1168 // The typedef is the sort that maps a function symbol to an function that rewrites it as well as a string of a function that can be used to implement it
1170 /// \brief Give all system defined mappings that are to be implemented in C++ code for set_
1171 /// \param s A sort expression
1172 /// \return A mapping from C++ implementable function symbols to system defined mappings implemented in C++ code for set_
1173 inline
1175 {
1176 implementation_map result;
1177 return result;
1178 }
1179 ///\brief Function for projecting out argument.
1180 /// left from an application.
1181 /// \param e A data expression.
1182 /// \pre left is defined for e.
1183 /// \return The argument of e that corresponds to left.
1184 inline
1186 {
1188 return atermpp::down_cast<application>(e)[0];
1189 }
1190
1191 ///\brief Function for projecting out argument.
1192 /// right from an application.
1193 /// \param e A data expression.
1194 /// \pre right is defined for e.
1195 /// \return The argument of e that corresponds to right.
1196 inline
1198 {
1200 return atermpp::down_cast<application>(e)[1];
1201 }
1202
1203 ///\brief Function for projecting out argument.
1204 /// arg from an application.
1205 /// \param e A data expression.
1206 /// \pre arg is defined for e.
1207 /// \return The argument of e that corresponds to arg.
1208 inline
1210 {
1212 return atermpp::down_cast<application>(e)[0];
1213 }
1214
1215 ///\brief Function for projecting out argument.
1216 /// arg1 from an application.
1217 /// \param e A data expression.
1218 /// \pre arg1 is defined for e.
1219 /// \return The argument of e that corresponds to arg1.
1220 inline
1222 {
1224 return atermpp::down_cast<application>(e)[0];
1225 }
1226
1227 ///\brief Function for projecting out argument.
1228 /// arg2 from an application.
1229 /// \param e A data expression.
1230 /// \pre arg2 is defined for e.
1231 /// \return The argument of e that corresponds to arg2.
1232 inline
1234 {
1236 return atermpp::down_cast<application>(e)[1];
1237 }
1238
1239 ///\brief Function for projecting out argument.
1240 /// arg3 from an application.
1241 /// \param e A data expression.
1242 /// \pre arg3 is defined for e.
1243 /// \return The argument of e that corresponds to arg3.
1244 inline
1246 {
1248 return atermpp::down_cast<application>(e)[2];
1249 }
1250
1251 ///\brief Function for projecting out argument.
1252 /// arg4 from an application.
1253 /// \param e A data expression.
1254 /// \pre arg4 is defined for e.
1255 /// \return The argument of e that corresponds to arg4.
1256 inline
1258 {
1260 return atermpp::down_cast<application>(e)[3];
1261 }
1262
1263 /// \brief Give all system defined equations for set_
1264 /// \param s A sort expression
1265 /// \return All system defined equations for sort set_
1266 inline
1268 {
1269 variable vd("d",s);
1270 variable ve("e",s);
1271 variable vs("s",sort_fset::fset(s));
1272 variable vt("t",sort_fset::fset(s));
1275 variable vx("x",set_(s));
1276 variable vy("y",set_(s));
1277 variable vc("c",s);
1278
1279 data_equation_vector result;
1280 result.emplace_back(variable_list({vs}), set_fset(s, vs), constructor(s, false_function(s), vs));
1281 result.emplace_back(variable_list({vf}), sort_set::set_comprehension(s, vf), constructor(s, vf, sort_fset::empty(s)));
1282 result.emplace_back(variable_list({ve, vf, vs}), in(s, ve, constructor(s, vf, vs)), not_equal_to(vf(ve), in(s, ve, vs)));
1283 result.emplace_back(variable_list({vf, vg, vs, vt}), equal_to(constructor(s, vf, vs), constructor(s, vg, vt)), forall(variable_list({vc}), equal_to(equal_to(vf(vc), vg(vc)), equal_to(in(s, vc, vs), in(s, vc, vt)))));
1284 result.emplace_back(variable_list({vx, vy}), less(vx, vy), sort_bool::and_(less_equal(vx, vy), not_equal_to(vx, vy)));
1285 result.emplace_back(variable_list({vx, vy}), less_equal(vx, vy), equal_to(intersection(s, vx, vy), vx));
1286 result.emplace_back(variable_list({vf, vg, vs, vt}), less_total(constructor(s, vf, vs), constructor(s, vg, vt)), sort_bool::or_(less_total(vs, vt), sort_bool::and_(equal_to(vs, vt), less_total(vf, vg))));
1287 result.emplace_back(variable_list({vf, vs}), complement(s, constructor(s, vf, vs)), constructor(s, not_function(s, vf), vs));
1288 result.emplace_back(variable_list({vx}), union_(s, vx, vx), vx);
1289 result.emplace_back(variable_list({vx, vy}), union_(s, vx, union_(s, vx, vy)), union_(s, vx, vy));
1290 result.emplace_back(variable_list({vx, vy}), union_(s, vx, union_(s, vy, vx)), union_(s, vy, vx));
1291 result.emplace_back(variable_list({vx, vy}), union_(s, union_(s, vx, vy), vx), union_(s, vx, vy));
1292 result.emplace_back(variable_list({vx, vy}), union_(s, union_(s, vy, vx), vx), union_(s, vy, vx));
1293 result.emplace_back(variable_list({vf, vg, vs, vt}), union_(s, constructor(s, vf, vs), constructor(s, vg, vt)), constructor(s, or_function(s, vf, vg), fset_union(s, vf, vg, vs, vt)));
1294 result.emplace_back(variable_list({vx}), intersection(s, vx, vx), vx);
1295 result.emplace_back(variable_list({vx, vy}), intersection(s, vx, intersection(s, vx, vy)), intersection(s, vx, vy));
1296 result.emplace_back(variable_list({vx, vy}), intersection(s, vx, intersection(s, vy, vx)), intersection(s, vy, vx));
1297 result.emplace_back(variable_list({vx, vy}), intersection(s, intersection(s, vx, vy), vx), intersection(s, vx, vy));
1298 result.emplace_back(variable_list({vx, vy}), intersection(s, intersection(s, vy, vx), vx), intersection(s, vy, vx));
1299 result.emplace_back(variable_list({vf, vg, vs, vt}), intersection(s, constructor(s, vf, vs), constructor(s, vg, vt)), constructor(s, and_function(s, vf, vg), fset_intersection(s, vf, vg, vs, vt)));
1300 result.emplace_back(variable_list({vx}), intersection(s, sort_fset::empty(s), vx), sort_fset::empty(s));
1301 result.emplace_back(variable_list({vd, vs, vx}), intersection(s, sort_fset::cons_(s, vd, vs), vx), if_(in(s, vd, vx), sort_fset::cons_(s, vd, intersection(s, vs, vx)), intersection(s, vs, vx)));
1302 result.emplace_back(variable_list({vs, vx}), intersection(s, vx, vs), intersection(s, vs, vx));
1303 result.emplace_back(variable_list({vx, vy}), difference(s, vx, vy), intersection(s, vx, complement(s, vy)));
1304 result.emplace_back(variable_list({vs, vx}), difference(s, vs, vx), intersection(s, vs, complement(s, vx)));
1305 result.emplace_back(variable_list({ve}), false_function(s, ve), sort_bool::false_());
1306 result.emplace_back(variable_list({ve}), true_function(s, ve), sort_bool::true_());
1307 result.emplace_back(variable_list(), equal_to(false_function(s), true_function(s)), sort_bool::false_());
1308 result.emplace_back(variable_list(), equal_to(true_function(s), false_function(s)), sort_bool::false_());
1309 result.emplace_back(variable_list({ve, vf}), not_function(s, vf)(ve), sort_bool::not_(vf(ve)));
1310 result.emplace_back(variable_list(), not_function(s, false_function(s)), true_function(s));
1311 result.emplace_back(variable_list(), not_function(s, true_function(s)), false_function(s));
1312 result.emplace_back(variable_list({ve, vf, vg}), and_function(s, vf, vg)(ve), sort_bool::and_(vf(ve), vg(ve)));
1313 result.emplace_back(variable_list({vf}), and_function(s, vf, vf), vf);
1314 result.emplace_back(variable_list({vf}), and_function(s, vf, false_function(s)), false_function(s));
1315 result.emplace_back(variable_list({vf}), and_function(s, false_function(s), vf), false_function(s));
1316 result.emplace_back(variable_list({vf}), and_function(s, vf, true_function(s)), vf);
1317 result.emplace_back(variable_list({vf}), and_function(s, true_function(s), vf), vf);
1318 result.emplace_back(variable_list({vf}), or_function(s, vf, vf), vf);
1319 result.emplace_back(variable_list({vf}), or_function(s, vf, false_function(s)), vf);
1320 result.emplace_back(variable_list({vf}), or_function(s, false_function(s), vf), vf);
1321 result.emplace_back(variable_list({vf}), or_function(s, vf, true_function(s)), true_function(s));
1322 result.emplace_back(variable_list({vf}), or_function(s, true_function(s), vf), true_function(s));
1323 result.emplace_back(variable_list({ve, vf, vg}), or_function(s, vf, vg)(ve), sort_bool::or_(vf(ve), vg(ve)));
1324 result.emplace_back(variable_list({vs, vt}), fset_union(s, false_function(s), false_function(s), vs, vt), union_(s, vs, vt));
1325 result.emplace_back(variable_list({vf, vg}), fset_union(s, vf, vg, sort_fset::empty(s), sort_fset::empty(s)), sort_fset::empty(s));
1326 result.emplace_back(variable_list({vd, vf, vg, vs}), fset_union(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::empty(s)), sort_fset::cinsert(s, vd, sort_bool::not_(vg(vd)), fset_union(s, vf, vg, vs, sort_fset::empty(s))));
1327 result.emplace_back(variable_list({ve, vf, vg, vt}), fset_union(s, vf, vg, sort_fset::empty(s), sort_fset::cons_(s, ve, vt)), sort_fset::cinsert(s, ve, sort_bool::not_(vf(ve)), fset_union(s, vf, vg, sort_fset::empty(s), vt)));
1328 result.emplace_back(variable_list({vd, vf, vg, vs, vt}), fset_union(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::cons_(s, vd, vt)), sort_fset::cinsert(s, vd, equal_to(vf(vd), vg(vd)), fset_union(s, vf, vg, vs, vt)));
1329 result.emplace_back(variable_list({vd, ve, vf, vg, vs, vt}), less_total(vd, ve), fset_union(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::cons_(s, ve, vt)), sort_fset::cinsert(s, vd, sort_bool::not_(vg(vd)), fset_union(s, vf, vg, vs, sort_fset::cons_(s, ve, vt))));
1330 result.emplace_back(variable_list({vd, ve, vf, vg, vs, vt}), less_total(ve, vd), fset_union(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::cons_(s, ve, vt)), sort_fset::cinsert(s, ve, sort_bool::not_(vf(ve)), fset_union(s, vf, vg, sort_fset::cons_(s, vd, vs), vt)));
1331 result.emplace_back(variable_list({vf, vg}), fset_intersection(s, vf, vg, sort_fset::empty(s), sort_fset::empty(s)), sort_fset::empty(s));
1332 result.emplace_back(variable_list({vd, vf, vg, vs}), fset_intersection(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::empty(s)), sort_fset::cinsert(s, vd, vg(vd), fset_intersection(s, vf, vg, vs, sort_fset::empty(s))));
1333 result.emplace_back(variable_list({ve, vf, vg, vt}), fset_intersection(s, vf, vg, sort_fset::empty(s), sort_fset::cons_(s, ve, vt)), sort_fset::cinsert(s, ve, vf(ve), fset_intersection(s, vf, vg, sort_fset::empty(s), vt)));
1334 result.emplace_back(variable_list({vd, vf, vg, vs, vt}), fset_intersection(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::cons_(s, vd, vt)), sort_fset::cinsert(s, vd, equal_to(vf(vd), vg(vd)), fset_intersection(s, vf, vg, vs, vt)));
1335 result.emplace_back(variable_list({vd, ve, vf, vg, vs, vt}), less_total(vd, ve), fset_intersection(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::cons_(s, ve, vt)), sort_fset::cinsert(s, vd, vg(vd), fset_intersection(s, vf, vg, vs, sort_fset::cons_(s, ve, vt))));
1336 result.emplace_back(variable_list({vd, ve, vf, vg, vs, vt}), less_total(ve, vd), fset_intersection(s, vf, vg, sort_fset::cons_(s, vd, vs), sort_fset::cons_(s, ve, vt)), sort_fset::cinsert(s, ve, vf(ve), fset_intersection(s, vf, vg, sort_fset::cons_(s, vd, vs), vt)));
1337 return result;
1338 }
1339
1340} // namespace mcrl2::data::sort_set
1341
1342#endif // MCRL2_DATA_SET1_H
aterm & operator=(const aterm &other) noexcept=default
aterm(const aterm &other) noexcept=default
This class has user-declared copy constructor so declare default copy and move operators.
A list of aterm objects.
Definition aterm_list.h:26
A unordered_map class in which aterms can be stored.
apply_builder_arg1(const Arg1 &arg1)
Definition builder.h:120
apply_builder_arg2(const Arg1 &arg1, const Arg2 &arg2)
Definition builder.h:144
singleton_expression & operator=(singleton_expression &&)=delete
singleton_expression & operator=(const singleton_expression &)=delete
singleton_expression(singleton_expression &&)=delete
singleton_expression(const singleton_expression &)=delete
update_apply_builder_arg1(const Function &f, const Arg1 &arg1)
Definition builder.h:212
void apply(T &result, const argument_type &x)
Definition builder.h:207
An abstraction expression.
Definition abstraction.h:23
const variable_list & variables() const
Definition abstraction.h:60
abstraction(const atermpp::aterm &term)
Constructor.
Definition abstraction.h:32
abstraction(const binder_type &binding_operator, const variable_list &variables, const data_expression &body)
Constructor.
Definition abstraction.h:39
abstraction(const abstraction &) noexcept=default
Move semantics.
abstraction(const binder_type &binding_operator, const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Constructor.
Definition abstraction.h:45
abstraction & operator=(abstraction &&) noexcept=default
const data_expression & body() const
Definition abstraction.h:65
abstraction(abstraction &&) noexcept=default
abstraction()
Default constructor.
Definition abstraction.h:26
const binder_type & binding_operator() const
Definition abstraction.h:55
abstraction & operator=(const abstraction &) noexcept=default
\brief A sort alias
Definition alias.h:23
alias()
\brief Default constructor X3.
Definition alias.h:26
alias(const alias &) noexcept=default
Move semantics.
alias & operator=(const alias &) noexcept=default
alias(const basic_sort &name, const sort_expression &reference)
\brief Constructor Z12.
Definition alias.h:39
alias(alias &&) noexcept=default
alias(const atermpp::aterm &term)
Definition alias.h:32
alias & operator=(alias &&) noexcept=default
const basic_sort & name() const
Definition alias.h:49
const sort_expression & reference() const
Definition alias.h:54
\brief Assignment expression
Definition assignment.h:24
\brief Assignment of a data expression to a variable
Definition assignment.h:88
const data_expression & rhs() const
Definition assignment.h:119
const variable & lhs() const
Definition assignment.h:114
\brief Binder for bag comprehension
bag_comprehension_binder(const atermpp::aterm &term)
bag_comprehension_binder & operator=(const bag_comprehension_binder &) noexcept=default
bag_comprehension_binder(const bag_comprehension_binder &) noexcept=default
Move semantics.
bag_comprehension_binder()
\brief Default constructor X3.
bag_comprehension_binder(bag_comprehension_binder &&) noexcept=default
bag_comprehension_binder & operator=(bag_comprehension_binder &&) noexcept=default
universal quantification.
\brief Container type for bags
bag_container(const bag_container &) noexcept=default
Move semantics.
bag_container(bag_container &&) noexcept=default
bag_container & operator=(bag_container &&) noexcept=default
bag_container()
\brief Default constructor X3.
bag_container(const atermpp::aterm &term)
bag_container & operator=(const bag_container &) noexcept=default
\brief A basic sort
Definition basic_sort.h:25
basic_sort(const basic_sort &) noexcept=default
Move semantics.
basic_sort()
\brief Default constructor X3.
Definition basic_sort.h:28
basic_sort & operator=(const basic_sort &) noexcept=default
const core::identifier_string & name() const
Definition basic_sort.h:56
basic_sort(basic_sort &&) noexcept=default
basic_sort(const core::identifier_string &name)
\brief Constructor Z14.
Definition basic_sort.h:41
basic_sort(const std::string &name)
\brief Constructor Z2.
Definition basic_sort.h:46
basic_sort & operator=(basic_sort &&) noexcept=default
basic_sort(const atermpp::aterm &term)
Definition basic_sort.h:34
binder_type()
\brief Default constructor X3.
Definition binder_type.h:27
binder_type(binder_type &&) noexcept=default
binder_type & operator=(const binder_type &) noexcept=default
binder_type & operator=(binder_type &&) noexcept=default
binder_type(const binder_type &) noexcept=default
Move semantics.
binder_type(const atermpp::aterm &term)
Definition binder_type.h:33
\brief A container sort
container_sort()
\brief Default constructor X3.
container_sort & operator=(container_sort &&) noexcept=default
container_sort(const container_sort &) noexcept=default
Move semantics.
container_sort(const container_type &container_name, const sort_expression &element_sort)
\brief Constructor Z14.
container_sort(container_sort &&) noexcept=default
container_sort & operator=(const container_sort &) noexcept=default
const container_type & container_name() const
const sort_expression & element_sort() const
container_sort(const atermpp::aterm &term)
\brief Container type
container_type(container_type &&) noexcept=default
container_type(const atermpp::aterm &term)
container_type & operator=(const container_type &) noexcept=default
container_type & operator=(container_type &&) noexcept=default
container_type(const container_type &) noexcept=default
Move semantics.
container_type()
\brief Default constructor X3.
\brief A data equation
data_equation(const atermpp::aterm &term)
data_equation()
\brief Default constructor X3.
const data_expression & lhs() const
const data_expression & condition() const
data_equation & operator=(data_equation &&) noexcept=default
data_equation(const Container &variables, const data_expression &lhs, const data_expression &rhs, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Constructor.
const data_expression & rhs() const
data_equation(data_equation &&) noexcept=default
data_equation(const variable_list &variables, const data_expression &condition, const data_expression &lhs, const data_expression &rhs)
\brief Constructor Z12.
const variable_list & variables() const
data_equation & operator=(const data_equation &) noexcept=default
data_equation(const data_expression &lhs, const data_expression &rhs)
Constructor.
data_expression & operator=(const data_expression &) noexcept=default
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4) const
Apply a data expression to four data expressions.
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3) const
Apply a data expression to three data expressions.
data_expression(const atermpp::aterm &term)
data_expression()
\brief Default constructor X3.
application operator()(const data_expression &e1, const data_expression &e2) const
Apply a data expression to two data expressions.
data_expression & operator=(data_expression &&) noexcept=default
sort_expression sort() const
Returns the sort of the data expression.
Definition data.cpp:107
const_iterator end() const
application operator()(const data_expression &e) const
Apply a data expression to a data expression.
data_expression(const data_expression &) noexcept=default
Move semantics.
data_expression(data_expression &&) noexcept=default
const_iterator begin() const
bool is_default_data_expression() const
A function to efficiently determine whether a data expression is made by the default constructor.
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4, const data_expression &e5) const
Apply a data expression to five data expressions.
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4, const data_expression &e5, const data_expression &e6) const
Apply a data expression to six data expressions.
\brief Binder for existential quantification
exists_binder(const exists_binder &) noexcept=default
Move semantics.
exists_binder & operator=(exists_binder &&) noexcept=default
exists_binder(exists_binder &&) noexcept=default
exists_binder & operator=(const exists_binder &) noexcept=default
exists_binder()
\brief Default constructor X3.
exists_binder(const atermpp::aterm &term)
existential quantification.
Definition exists.h:23
\brief Container type for finite bags
fbag_container & operator=(const fbag_container &) noexcept=default
fbag_container()
\brief Default constructor X3.
fbag_container(const fbag_container &) noexcept=default
Move semantics.
fbag_container & operator=(fbag_container &&) noexcept=default
fbag_container(const atermpp::aterm &term)
fbag_container(fbag_container &&) noexcept=default
\brief Binder for universal quantification
forall_binder(const forall_binder &) noexcept=default
Move semantics.
forall_binder & operator=(forall_binder &&) noexcept=default
forall_binder(const atermpp::aterm &term)
forall_binder()
\brief Default constructor X3.
forall_binder(forall_binder &&) noexcept=default
forall_binder & operator=(const forall_binder &) noexcept=default
universal quantification.
Definition forall.h:25
forall(forall &&) noexcept=default
forall(const aterm &d)
Definition forall.h:33
forall & operator=(const forall &) noexcept=default
forall(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Definition forall.h:46
forall & operator=(forall &&) noexcept=default
forall(const forall &) noexcept=default
Move semantics.
\brief Container type for finite sets
fset_container(fset_container &&) noexcept=default
fset_container(const fset_container &) noexcept=default
Move semantics.
fset_container(const atermpp::aterm &term)
fset_container()
\brief Default constructor X3.
fset_container & operator=(fset_container &&) noexcept=default
fset_container & operator=(const fset_container &) noexcept=default
\brief A function sort
const sort_expression & codomain() const
function_sort()
\brief Default constructor X3.
function_sort(const sort_expression_list &domain, const sort_expression &codomain)
\brief Constructor Z14.
function_sort & operator=(const function_sort &) noexcept=default
function_sort(const atermpp::aterm &term)
function_sort & operator=(function_sort &&) noexcept=default
function_sort(function_sort &&) noexcept=default
const sort_expression_list & domain() const
\brief A function symbol
function_symbol(const core::identifier_string &name, const sort_expression &sort)
Constructor.
function_symbol(const function_symbol &) noexcept=default
Move semantics.
function_symbol & operator=(function_symbol &&) noexcept=default
function_symbol()
Default constructor.
function_symbol(function_symbol &&) noexcept=default
function_symbol(const atermpp::aterm &term)
Constructor.
const core::identifier_string & name() const
const sort_expression & sort() const
function_symbol & operator=(const function_symbol &) noexcept=default
function_symbol(const std::string &name, const sort_expression &sort)
Constructor.
\brief Binder for lambda abstraction
lambda_binder & operator=(lambda_binder &&) noexcept=default
lambda_binder(const atermpp::aterm &term)
lambda_binder()
\brief Default constructor X3.
lambda_binder(lambda_binder &&) noexcept=default
lambda_binder & operator=(const lambda_binder &) noexcept=default
lambda_binder(const lambda_binder &) noexcept=default
Move semantics.
function symbol.
Definition lambda.h:24
\brief Container type for lists
list_container(list_container &&) noexcept=default
list_container()
\brief Default constructor X3.
list_container & operator=(list_container &&) noexcept=default
list_container & operator=(const list_container &) noexcept=default
list_container(const list_container &) noexcept=default
Move semantics.
list_container(const atermpp::aterm &term)
\brief A machine number
\brief Binder for set comprehension
set_comprehension_binder(const atermpp::aterm &term)
set_comprehension_binder & operator=(set_comprehension_binder &&) noexcept=default
set_comprehension_binder & operator=(const set_comprehension_binder &) noexcept=default
set_comprehension_binder()
\brief Default constructor X3.
set_comprehension_binder(set_comprehension_binder &&) noexcept=default
set_comprehension_binder(const set_comprehension_binder &) noexcept=default
Move semantics.
universal quantification.
\brief Container type for sets
set_container()
\brief Default constructor X3.
set_container(const set_container &) noexcept=default
Move semantics.
set_container(set_container &&) noexcept=default
set_container & operator=(set_container &&) noexcept=default
set_container & operator=(const set_container &) noexcept=default
set_container(const atermpp::aterm &term)
\brief A sort expression
sort_expression & operator=(const sort_expression &) noexcept=default
sort_expression(const sort_expression &) noexcept=default
Move semantics.
sort_expression & operator=(sort_expression &&) noexcept=default
const sort_expression & target_sort() const
Returns the target sort of this expression.
sort_expression(sort_expression &&) noexcept=default
sort_expression()
\brief Default constructor X3.
sort_expression(const atermpp::aterm &term)
\brief An argument of a constructor of a structured sort
\brief A constructor for a structured sort
const core::identifier_string & name() const
const core::identifier_string & recogniser() const
const structured_sort_constructor_argument_list & arguments() const
const structured_sort_constructor_list & constructors() const
const core::identifier_string & name() const
const data_expression_list & arguments() const
\brief Assignment of a data expression to a string
Definition assignment.h:179
const core::identifier_string & lhs() const
Definition assignment.h:210
const data_expression & rhs() const
Definition assignment.h:215
\brief An untyped identifier
const sort_expression_list & sorts() const
\brief Binder for untyped set or bag comprehension
Definition binder_type.h:74
untyped_set_or_bag_comprehension_binder(untyped_set_or_bag_comprehension_binder &&) noexcept=default
untyped_set_or_bag_comprehension_binder(const atermpp::aterm &term)
Definition binder_type.h:83
untyped_set_or_bag_comprehension_binder()
\brief Default constructor X3.
Definition binder_type.h:77
untyped_set_or_bag_comprehension_binder(const untyped_set_or_bag_comprehension_binder &) noexcept=default
Move semantics.
untyped_set_or_bag_comprehension_binder & operator=(const untyped_set_or_bag_comprehension_binder &) noexcept=default
untyped_set_or_bag_comprehension_binder & operator=(untyped_set_or_bag_comprehension_binder &&) noexcept=default
\brief Unknown sort expression
untyped_sort & operator=(const untyped_sort &) noexcept=default
untyped_sort(const atermpp::aterm &term)
untyped_sort(const untyped_sort &) noexcept=default
Move semantics.
untyped_sort & operator=(untyped_sort &&) noexcept=default
untyped_sort(untyped_sort &&) noexcept=default
untyped_sort()
\brief Default constructor X3.
\brief A data variable
Definition variable.h:25
variable(const variable &) noexcept=default
Move semantics.
variable(const std::string &name, const sort_expression &sort)
Constructor.
Definition variable.h:66
variable(variable &&) noexcept=default
variable()
Default constructor.
Definition variable.h:46
const core::identifier_string & name() const
Definition variable.h:35
variable & operator=(variable &&) noexcept=default
const sort_expression & sort() const
Definition variable.h:40
variable & operator=(const variable &) noexcept=default
variable(const core::identifier_string &name, const sort_expression &sort)
Constructor.
Definition variable.h:59
variable(const atermpp::aterm &term)
Constructor.
Definition variable.h:52
\brief A where expression
const data_expression & body() const
const assignment_expression_list & declarations() const
D_ParserTables parser_tables_mcrl2
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
Definition logger.h:435
const aterm_string & empty_string()
Returns the empty aterm_string.
bool check_term_PREqnSpec(const Term &t)
bool check_term_MapSpec(const Term &t)
bool check_term_PBESTrue(const Term &t)
bool check_term_Seq(const Term &t)
bool check_term_DataVarIdInit(const Term &t)
bool check_rule_DataVarIdInit(const Term &t)
bool check_term_Action(const Term &t)
bool check_term_PRESOr(const Term &t)
bool check_term_SortId(const Term &t)
bool check_term_Sum(const Term &t)
bool check_term_Whr(const Term &t)
bool check_term_ActAt(const Term &t)
bool check_rule_WhrDecl(const Term &t)
bool check_term_StateInfimum(const Term &t)
bool check_term_CommExpr(const Term &t)
bool check_rule_ActSpec(const Term &t)
bool check_term_UntypedSortUnknown(const Term &t)
bool check_term_ActFalse(const Term &t)
bool check_term_ActId(const Term &t)
bool check_term_RegTrans(const Term &t)
bool check_rule_Distribution(const Term &t)
bool check_term_LinearProcessSummand(const Term &t)
bool check_rule_Number(const Term &t)
bool check_term_StateFalse(const Term &t)
bool check_term_argument(const Term &t, CheckFunction f)
bool check_term_UntypedSortVariable(const Term &t)
bool check_rule_ActFrm(const Term &t)
bool check_term_MultAct(const Term &t)
bool check_term_Tau(const Term &t)
bool check_rule_ActId(const Term &t)
bool check_term_UntypedProcessAssignment(const Term &t)
bool check_term_StateDelayTimed(const Term &t)
bool check_term_Delta(const Term &t)
bool check_rule_PBEqn(const Term &t)
bool check_rule_Action(const Term &t)
bool check_term_PRESTrue(const Term &t)
bool check_rule_ActionRenameSpec(const Term &t)
bool check_rule_FixPoint(const Term &t)
bool check_list_argument(const Term &t, CheckFunction f, unsigned int minimum_size)
bool check_rule_DataEqn(const Term &t)
bool check_rule_LinProcSpec(const Term &t)
bool check_term_PRES(const Term &t)
bool check_rule_SortDecl(const Term &t)
bool check_rule_RenameExpr(const Term &t)
bool check_term_ActImp(const Term &t)
bool check_term_Allow(const Term &t)
bool check_term_Choice(const Term &t)
bool check_term_LinProcSpec(const Term &t)
bool check_rule_SortId(const Term &t)
bool check_term_PBESNot(const Term &t)
bool check_term_Sync(const Term &t)
bool check_rule_String(const Term &t)
bool check_term_ActMultAct(const Term &t)
bool check_term_PRESCondEq(const Term &t)
bool check_term_RegTransOrNil(const Term &t)
bool check_term_GlobVarSpec(const Term &t)
bool check_term_StateSupremum(const Term &t)
bool check_term_Mu(const Term &t)
bool check_rule_BindingOperator(const Term &t)
bool check_rule_CommExpr(const Term &t)
bool check_term_UntypedIdentifierAssignment(const Term &t)
bool check_term_RegNil(const Term &t)
bool check_term_DataEqn(const Term &t)
bool check_term_UntypedIdentifier(const Term &t)
bool check_term_StateMust(const Term &t)
bool check_rule_StructProj(const Term &t)
bool check_rule_ConsSpec(const Term &t)
bool check_term_ProcEqnSpec(const Term &t)
bool check_term_LMerge(const Term &t)
bool check_term_ConsSpec(const Term &t)
bool check_rule_SortConsType(const Term &t)
bool check_term_SortSet(const Term &t)
bool check_rule_SortSpec(const Term &t)
bool check_rule_PRES(const Term &t)
bool check_term_Binder(const Term &t)
bool check_term_SortArrow(const Term &t)
bool check_rule_DataExpr(const Term &t)
bool check_term_StateSum(const Term &t)
bool check_term_DataVarId(const Term &t)
bool check_term_UntypedDataParameter(const Term &t)
bool check_term_PRESConstantMultiply(const Term &t)
bool check_term_PBESForall(const Term &t)
bool check_rule_DataEqnSpec(const Term &t)
bool check_term_ActTrue(const Term &t)
bool check_rule_MultActOrDelta(const Term &t)
bool check_rule_LinearProcess(const Term &t)
bool check_term_ProcessInit(const Term &t)
bool check_term_BagComp(const Term &t)
bool check_rule_ProcVarId(const Term &t)
bool check_term_SortFBag(const Term &t)
bool check_rule_PRExpr(const Term &t)
bool check_term_StateYaled(const Term &t)
bool check_term_MultActName(const Term &t)
bool check_term_Nu(const Term &t)
bool check_term_PBESExists(const Term &t)
bool check_term_BInit(const Term &t)
bool check_term_ProcessAssignment(const Term &t)
bool check_term_Lambda(const Term &t)
bool check_term_StateMay(const Term &t)
bool check_term_PRESAnd(const Term &t)
bool check_term_StateVar(const Term &t)
bool check_term_SortRef(const Term &t)
bool check_term_PRESEqInf(const Term &t)
bool check_rule_StateFrm(const Term &t)
bool check_term_ProcSpec(const Term &t)
bool check_term_SortBag(const Term &t)
bool check_term_ProcEqn(const Term &t)
bool check_rule_MultActName(const Term &t)
bool check_term_StatePlus(const Term &t)
bool check_term_TimedMultAct(const Term &t)
bool check_term_PRESInfimum(const Term &t)
bool check_term_Rename(const Term &t)
bool check_rule_MapSpec(const Term &t)
bool check_rule_ProcEqnSpec(const Term &t)
bool check_rule_ProcEqn(const Term &t)
bool check_rule_PREqn(const Term &t)
bool check_term_StateYaledTimed(const Term &t)
bool check_term_StateImp(const Term &t)
bool check_term_StateConstantMultiply(const Term &t)
bool check_rule_DataVarId(const Term &t)
bool check_rule_UntypedIdentifierAssignment(const Term &t)
bool check_term_SortCons(const Term &t)
bool check_term_PRESSupremum(const Term &t)
bool check_term_PropVarInst(const Term &t)
bool check_term_UntypedRegFrm(const Term &t)
bool check_rule_PBES(const Term &t)
bool check_term_IfThen(const Term &t)
bool check_term_ActForall(const Term &t)
bool check_term_StateTrue(const Term &t)
bool check_term_SortSpec(const Term &t)
bool check_term_StateOr(const Term &t)
bool check_term_Forall(const Term &t)
bool check_term_UntypedSetBagComp(const Term &t)
bool check_term_LinearProcess(const Term &t)
bool check_term_PBInit(const Term &t)
bool check_rule_ProcExpr(const Term &t)
bool check_term_Comm(const Term &t)
bool check_term_StateAnd(const Term &t)
bool check_term_PBESOr(const Term &t)
bool check_term_StateMinus(const Term &t)
bool check_term_RenameExpr(const Term &t)
bool check_term_ActExists(const Term &t)
bool check_term_LinearProcessInit(const Term &t)
bool check_rule_SortExpr(const Term &t)
bool check_term_PREqn(const Term &t)
bool check_term_UntypedMultiAction(const Term &t)
bool check_term_PBES(const Term &t)
bool check_rule_GlobVarSpec(const Term &t)
bool check_rule_ActionRenameRuleRHS(const Term &t)
bool check_term_ActAnd(const Term &t)
bool check_rule_DataSpec(const Term &t)
bool check_term_AtTime(const Term &t)
bool check_term_ActSpec(const Term &t)
bool check_term_StateMu(const Term &t)
bool check_rule_LinearProcessSummand(const Term &t)
bool check_rule_StringOrEmpty(const Term &t)
bool check_term_StateNu(const Term &t)
bool check_term_PBEqn(const Term &t)
bool check_term_PRESSum(const Term &t)
bool check_term_ActionRenameSpec(const Term &t)
bool check_term_StateDelay(const Term &t)
bool check_rule_PBEqnSpec(const Term &t)
bool check_term_SortStruct(const Term &t)
bool check_rule_RegFrm(const Term &t)
bool check_rule_ActionRenameRules(const Term &t)
bool check_term_StochasticOperator(const Term &t)
bool check_rule_ProcSpec(const Term &t)
bool check_term_PBESImp(const Term &t)
bool gsIsDataAppl(const atermpp::aterm &Term)
bool check_rule_PropVarDecl(const Term &t)
bool check_term_StateForall(const Term &t)
bool check_term_PRInit(const Term &t)
bool check_term_DataEqnSpec(const Term &t)
bool check_term_StructCons(const Term &t)
bool check_rule_ParamIdOrAction(const Term &t)
bool check_term_ProcVarId(const Term &t)
bool check_term_PRESConstantMultiplyAlt(const Term &t)
bool check_term_DataSpec(const Term &t)
bool check_term_Process(const Term &t)
bool gsIsDataAppl_no_check(const atermpp::aterm &Term)
bool check_term_ActionRenameRule(const Term &t)
bool check_rule_ActionRenameRule(const Term &t)
bool check_rule_PBExpr(const Term &t)
bool check_term_StateNot(const Term &t)
bool check_term_PRESFalse(const Term &t)
bool check_rule_UntypedMultiAction(const Term &t)
bool check_term_OpId(const Term &t)
bool check_term_Distribution(const Term &t)
bool check_term_ActNot(const Term &t)
bool check_term_PRESEqNInf(const Term &t)
bool check_term_UntypedSortsPossible(const Term &t)
bool check_rule_UntypedDataParameter(const Term &t)
bool check_term_Hide(const Term &t)
bool check_rule_PREqnSpec(const Term &t)
bool check_rule_TimedMultAct(const Term &t)
bool check_term_Merge(const Term &t)
bool check_rule_PropVarInst(const Term &t)
bool check_term_Exists(const Term &t)
bool check_term_SetComp(const Term &t)
bool check_term_ActOr(const Term &t)
bool check_term_StructProj(const Term &t)
bool check_term_PRESMinus(const Term &t)
bool check_rule_MultAct(const Term &t)
bool check_term_SortList(const Term &t)
bool check_term_PBEqnSpec(const Term &t)
bool check_rule_LinearProcessInit(const Term &t)
bool check_rule_PBInit(const Term &t)
bool check_term_IfThenElse(const Term &t)
bool check_term_PBESAnd(const Term &t)
bool check_rule_ProcInit(const Term &t)
bool check_term_PBESFalse(const Term &t)
bool check_rule_StructCons(const Term &t)
bool check_term_PRESPlus(const Term &t)
bool check_rule_OpId(const Term &t)
bool check_term_PropVarDecl(const Term &t)
bool check_term_SortFSet(const Term &t)
bool check_term_PRESCondSm(const Term &t)
bool check_term_Block(const Term &t)
bool check_term_StateExists(const Term &t)
bool check_term_ActionRenameRules(const Term &t)
bool check_term_StateConstantMultiplyAlt(const Term &t)
bool check_term_DataAppl(const Term &t)
bool check_term_RegSeq(const Term &t)
bool check_term_PRESImp(const Term &t)
bool check_term_RegAlt(const Term &t)
bool check_rule_PRInit(const Term &t)
apply_builder< Builder > make_apply_builder()
Definition builder.h:103
update_apply_builder_arg1< Builder, Function, Arg1 > make_update_apply_builder_arg1(const Function &f)
Definition builder.h:220
void warn_and_or(const parse_node &)
Prints a warning for each occurrence of 'x && y || z' in the parse tree.
apply_builder_arg1< Builder, Arg1 > make_apply_builder_arg1(const Arg1 &arg1)
Definition builder.h:127
update_apply_builder< Builder, Function > make_update_apply_builder(const Function &f)
Definition builder.h:186
apply_builder_arg2< Builder, Arg1, Arg2 > make_apply_builder_arg2(const Arg1 &arg1, const Arg2 &arg2)
Definition builder.h:151
data_expression parse_data_expression(const std::string &text)
Definition data.cpp:217
data_specification parse_data_specification_new(const std::string &text)
Definition data.cpp:228
variable_list parse_variable_declaration_list(const std::string &text)
Definition data.cpp:239
variable_list parse_variables(const std::string &text)
Definition data.cpp:206
sort_expression parse_sort_expression(const std::string &text)
Definition data.cpp:196
Namespace for system defined sort bag.
Definition bag1.h:35
function_symbol fbag2fset(const sort_expression &s)
Constructor for function symbol @fbag2fset.
Definition bag1.h:1471
bool is_bag2set_application(const atermpp::aterm &e)
Recogniser for application of Bag2Set.
Definition bag1.h:747
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition bag1.h:555
void make_bool2nat_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @Bool2Nat_.
Definition bag1.h:1239
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
Definition bag1.h:664
const core::identifier_string & fbag2fset_name()
Generate identifier @fbag2fset.
Definition bag1.h:1461
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition bag1.h:1631
bool is_min_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @min_.
Definition bag1.h:1025
function_symbol bag_fbag(const sort_expression &s)
Constructor for function symbol @bagfbag.
Definition bag1.h:172
bool is_min_function_application(const atermpp::aterm &e)
Recogniser for application of @min_.
Definition bag1.h:1061
function_symbol monus_function(const sort_expression &s)
Constructor for function symbol @monus_.
Definition bag1.h:1079
const core::identifier_string & fbag_intersect_name()
Generate identifier @fbag_inter.
Definition bag1.h:1325
void make_bag2set(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol Bag2Set.
Definition bag1.h:737
bool is_fbag_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_diff.
Definition bag1.h:1413
bool is_fbag_join_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_join.
Definition bag1.h:1277
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol count.
Definition bag1.h:332
function_symbol_vector bag_generate_functions_code(const sort_expression &s)
Give all system defined mappings for bag.
Definition bag1.h:1525
application zero_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @zero_.
Definition bag1.h:851
const core::identifier_string & bool2nat_function_name()
Generate identifier @Bool2Nat_.
Definition bag1.h:1195
void make_one_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @one_.
Definition bag1.h:923
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition bag1.h:1679
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
Definition bag1.h:685
function_symbol difference(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
Definition bag1.h:608
const core::identifier_string & set2bag_name()
Generate identifier Set2Bag.
Definition bag1.h:755
bool is_bag_fbag_application(const atermpp::aterm &e)
Recogniser for application of @bagfbag.
Definition bag1.h:216
application fbag2fset(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @fbag2fset.
Definition bag1.h:1496
function_symbol_vector bag_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for bag.
Definition bag1.h:1558
void make_add_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_.
Definition bag1.h:987
data_equation_vector bag_generate_equations_code(const sort_expression &s)
Give all system defined equations for bag.
Definition bag1.h:1701
bool is_fbag_difference_application(const atermpp::aterm &e)
Recogniser for application of @fbag_diff.
Definition bag1.h:1453
bool is_bag_fbag_function_symbol(const atermpp::aterm &e)
Recogniser for function @bagfbag.
Definition bag1.h:182
const core::identifier_string & zero_function_name()
Generate identifier @zero_.
Definition bag1.h:817
const core::identifier_string & add_function_name()
Generate identifier @add_.
Definition bag1.h:941
application bag2set(const sort_expression &s, const data_expression &arg0)
Application of function symbol Bag2Set.
Definition bag1.h:727
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
Definition bag1.h:385
function_symbol_vector bag_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for bag.
Definition bag1.h:140
bool is_fbag2fset_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag2fset.
Definition bag1.h:1481
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition bag1.h:491
function_symbol bag2set(const sort_expression &s)
Constructor for function symbol Bag2Set.
Definition bag1.h:703
bool is_monus_function_application(const atermpp::aterm &e)
Recogniser for application of @monus_.
Definition bag1.h:1125
const core::identifier_string & nat2bool_function_name()
Generate identifier @Nat2Bool_.
Definition bag1.h:1133
function_symbol intersection(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
Definition bag1.h:507
bool is_zero_function_application(const atermpp::aterm &e)
Recogniser for application of @zero_.
Definition bag1.h:871
const core::identifier_string & fbag_difference_name()
Generate identifier @fbag_diff.
Definition bag1.h:1393
void make_monus_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monus_.
Definition bag1.h:1115
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function count.
Definition bag1.h:305
function_symbol count(const sort_expression &, const sort_expression &s0, const sort_expression &s1)
Definition bag1.h:294
function_symbol add_function(const sort_expression &s)
Constructor for function symbol @add_.
Definition bag1.h:951
bool is_nat2bool_function_application(const atermpp::aterm &e)
Recogniser for application of @Nat2Bool_.
Definition bag1.h:1187
function_symbol fbag_intersect(const sort_expression &s)
Constructor for function symbol @fbag_inter.
Definition bag1.h:1335
void make_fbag_intersect(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fbag_inter.
Definition bag1.h:1375
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition bag1.h:454
void make_nat2bool_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @Nat2Bool_.
Definition bag1.h:1177
application bag_fbag(const sort_expression &s, const data_expression &arg0)
Application of function symbol @bagfbag.
Definition bag1.h:196
bool is_fbag_intersect_application(const atermpp::aterm &e)
Recogniser for application of @fbag_inter.
Definition bag1.h:1385
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
Definition bag1.h:406
function_symbol fbag_difference(const sort_expression &s)
Constructor for function symbol @fbag_diff.
Definition bag1.h:1403
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
Definition bag1.h:369
application bool2nat_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @Bool2Nat_.
Definition bag1.h:1229
bool is_bag_comprehension_function_symbol(const atermpp::aterm &e)
Recogniser for function @bagcomp.
Definition bag1.h:244
void make_min_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @min_.
Definition bag1.h:1051
const core::identifier_string & min_function_name()
Generate identifier @min_.
Definition bag1.h:1005
bool is_set2bag_function_symbol(const atermpp::aterm &e)
Recogniser for function Set2Bag.
Definition bag1.h:775
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition bag1.h:470
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition bag1.h:1619
function_symbol_vector bag_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for bag.
Definition bag1.h:1572
bool is_nat2bool_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @Nat2Bool_.
Definition bag1.h:1153
application one_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @one_.
Definition bag1.h:913
const core::identifier_string & monus_function_name()
Generate identifier @monus_.
Definition bag1.h:1069
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
Definition bag1.h:1691
bool is_add_function_application(const atermpp::aterm &e)
Recogniser for application of @add_.
Definition bag1.h:997
void make_fbag2fset(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @fbag2fset.
Definition bag1.h:1507
void make_fbag_join(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fbag_join.
Definition bag1.h:1307
function_symbol min_function(const sort_expression &s)
Constructor for function symbol @min_.
Definition bag1.h:1015
function_symbol set2bag(const sort_expression &s)
Constructor for function symbol Set2Bag.
Definition bag1.h:765
const core::identifier_string & bag_fbag_name()
Generate identifier @bagfbag.
Definition bag1.h:162
const core::identifier_string & bag2set_name()
Generate identifier Bag2Set.
Definition bag1.h:693
const core::identifier_string & intersection_name()
Generate identifier *.
Definition bag1.h:499
application nat2bool_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @Nat2Bool_.
Definition bag1.h:1167
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
Definition bag1.h:396
application constructor(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @bag.
Definition bag1.h:100
application fbag_intersect(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fbag_inter.
Definition bag1.h:1362
function_symbol bag_comprehension(const sort_expression &s)
Constructor for function symbol @bagcomp.
Definition bag1.h:234
bool is_bag2set_function_symbol(const atermpp::aterm &e)
Recogniser for function Bag2Set.
Definition bag1.h:713
implementation_map bag_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition bag1.h:153
bool is_bool2nat_function_application(const atermpp::aterm &e)
Recogniser for application of @Bool2Nat_.
Definition bag1.h:1249
const core::identifier_string & fbag_join_name()
Generate identifier @fbag_join.
Definition bag1.h:1257
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition bag1.h:582
function_symbol fbag_join(const sort_expression &s)
Constructor for function symbol @fbag_join.
Definition bag1.h:1267
bool is_constructor_application(const atermpp::aterm &e)
Recogniser for application of @bag.
Definition bag1.h:121
bool is_zero_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @zero_.
Definition bag1.h:837
function_symbol constructor(const sort_expression &s)
Constructor for function symbol @bag.
Definition bag1.h:75
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition bag1.h:1667
const core::identifier_string & constructor_name()
Generate identifier @bag.
Definition bag1.h:65
bool is_bag_comprehension_application(const atermpp::aterm &e)
Recogniser for application of @bagcomp.
Definition bag1.h:278
bool is_set2bag_application(const atermpp::aterm &e)
Recogniser for application of Set2Bag.
Definition bag1.h:809
function_symbol in(const sort_expression &, const sort_expression &s0, const sort_expression &s1)
Definition bag1.h:358
void make_zero_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @zero_.
Definition bag1.h:861
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition bag1.h:1655
void make_bag_fbag(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @bagfbag.
Definition bag1.h:206
function_symbol bool2nat_function(const sort_expression &s)
Constructor for function symbol @Bool2Nat_.
Definition bag1.h:1205
void make_set2bag(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol Set2Bag.
Definition bag1.h:799
const core::identifier_string & union_name()
Generate identifier +.
Definition bag1.h:414
bool is_fbag_intersect_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_inter.
Definition bag1.h:1345
function_symbol union_(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
Definition bag1.h:422
implementation_map bag_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for bag.
Definition bag1.h:1608
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition bag1.h:592
void make_bag_comprehension(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @bagcomp.
Definition bag1.h:268
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition bag1.h:1643
void make_fbag_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fbag_diff.
Definition bag1.h:1443
const core::identifier_string & count_name()
Generate identifier count.
Definition bag1.h:286
function_symbol nat2bool_function(const sort_expression &s)
Constructor for function symbol @Nat2Bool_.
Definition bag1.h:1143
bool is_one_function_application(const atermpp::aterm &e)
Recogniser for application of @one_.
Definition bag1.h:933
application fbag_difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fbag_diff.
Definition bag1.h:1430
application add_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_.
Definition bag1.h:976
const core::identifier_string & difference_name()
Generate identifier -.
Definition bag1.h:600
application set2bag(const sort_expression &s, const data_expression &arg0)
Application of function symbol Set2Bag.
Definition bag1.h:789
bool is_bool2nat_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @Bool2Nat_.
Definition bag1.h:1215
bool is_bag(const sort_expression &e)
Recogniser for sort expression Bag(s)
Definition bag1.h:52
application monus_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @monus_.
Definition bag1.h:1104
container_sort bag(const sort_expression &s)
Constructor for sort expression Bag(S)
Definition bag1.h:41
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
Definition bag1.h:648
bool is_fbag2fset_application(const atermpp::aterm &e)
Recogniser for application of @fbag2fset.
Definition bag1.h:1517
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition bag1.h:571
const core::identifier_string & in_name()
Generate identifier in.
Definition bag1.h:350
bool is_constructor_function_symbol(const atermpp::aterm &e)
Recogniser for function @bag.
Definition bag1.h:85
const core::identifier_string & bag_comprehension_name()
Generate identifier @bagcomp.
Definition bag1.h:224
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of count.
Definition bag1.h:342
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
Definition bag1.h:675
application fbag_join(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fbag_join.
Definition bag1.h:1294
const core::identifier_string & one_function_name()
Generate identifier @one_.
Definition bag1.h:879
bool is_add_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_.
Definition bag1.h:961
void make_constructor(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @bag.
Definition bag1.h:111
function_symbol zero_function(const sort_expression &s)
Constructor for function symbol @zero_.
Definition bag1.h:827
bool is_one_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @one_.
Definition bag1.h:899
application bag_comprehension(const sort_expression &s, const data_expression &arg0)
Application of function symbol @bagcomp.
Definition bag1.h:258
function_symbol one_function(const sort_expression &s)
Constructor for function symbol @one_.
Definition bag1.h:889
application count(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol count.
Definition bag1.h:321
application min_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @min_.
Definition bag1.h:1040
void make_union(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition bag1.h:481
function_symbol_vector bag_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for bag.
Definition bag1.h:129
bool is_fbag_join_application(const atermpp::aterm &e)
Recogniser for application of @fbag_join.
Definition bag1.h:1317
bool is_monus_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus_.
Definition bag1.h:1089
Namespace for system defined sort bool_.
Definition bool.h:29
void make_not(data_expression &result, const data_expression &arg0)
Make an application of function symbol !.
Definition bool.h:204
data_equation_vector bool_generate_equations_code()
Give all system defined equations for bool_.
Definition bool.h:499
bool is_false_function_symbol(const atermpp::aterm &e)
Recogniser for function false.
Definition bool.h:116
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition bool.h:466
void make_and(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol &&.
Definition bool.h:268
function_symbol_vector bool_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for bool_.
Definition bool.h:439
function_symbol_vector bool_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for bool_.
Definition bool.h:138
bool is_or_application(const atermpp::aterm &e)
Recogniser for application of ||.
Definition bool.h:342
bool is_bool(const sort_expression &e)
Recogniser for sort expression Bool.
Definition bool.h:51
const core::identifier_string & implies_name()
Generate identifier =>.
Definition bool.h:350
const basic_sort & bool_()
Constructor for sort expression Bool.
Definition bool.h:41
const core::identifier_string & or_name()
Generate identifier ||.
Definition bool.h:286
implementation_map bool_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition bool.h:151
const function_symbol & implies()
Constructor for function symbol =>.
Definition bool.h:360
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition bool.h:490
bool is_not_function_symbol(const atermpp::aterm &e)
Recogniser for function !.
Definition bool.h:180
bool is_implies_application(const atermpp::aterm &e)
Recogniser for application of =>.
Definition bool.h:406
application not_(const data_expression &arg0)
Application of function symbol !.
Definition bool.h:194
const function_symbol & and_()
Constructor for function symbol &&.
Definition bool.h:232
application and_(const data_expression &arg0, const data_expression &arg1)
Application of function symbol &&.
Definition bool.h:257
function_symbol_vector bool_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for bool_.
Definition bool.h:426
const core::identifier_string & not_name()
Generate identifier !.
Definition bool.h:160
application implies(const data_expression &arg0, const data_expression &arg1)
Application of function symbol =>.
Definition bool.h:385
function_symbol_vector bool_generate_constructors_code()
Give all system defined constructors for bool_.
Definition bool.h:127
implementation_map bool_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for bool_.
Definition bool.h:455
application or_(const data_expression &arg0, const data_expression &arg1)
Application of function symbol ||.
Definition bool.h:321
const function_symbol & false_()
Constructor for function symbol false.
Definition bool.h:106
const core::identifier_string & bool_name()
Definition bool.h:32
bool is_and_function_symbol(const atermpp::aterm &e)
Recogniser for function &&.
Definition bool.h:242
bool is_and_application(const atermpp::aterm &e)
Recogniser for application of &&.
Definition bool.h:278
void make_or(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol ||.
Definition bool.h:332
const function_symbol & or_()
Constructor for function symbol ||.
Definition bool.h:296
bool is_or_function_symbol(const atermpp::aterm &e)
Recogniser for function ||.
Definition bool.h:306
bool is_true_function_symbol(const atermpp::aterm &e)
Recogniser for function true.
Definition bool.h:84
const core::identifier_string & false_name()
Generate identifier false.
Definition bool.h:96
const core::identifier_string & true_name()
Generate identifier true.
Definition bool.h:64
bool is_not_application(const atermpp::aterm &e)
Recogniser for application of !.
Definition bool.h:214
function_symbol_vector bool_generate_functions_code()
Give all system defined mappings for bool_.
Definition bool.h:413
const function_symbol & not_()
Constructor for function symbol !.
Definition bool.h:170
const function_symbol & true_()
Constructor for function symbol true.
Definition bool.h:74
bool is_implies_function_symbol(const atermpp::aterm &e)
Recogniser for function =>.
Definition bool.h:370
void make_implies(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol =>.
Definition bool.h:396
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition bool.h:478
const core::identifier_string & and_name()
Generate identifier &&.
Definition bool.h:222
Namespace for system defined sort fbag.
Definition fbag1.h:34
bool is_empty_function_symbol(const atermpp::aterm &e)
Recogniser for function {:}.
Definition fbag1.h:84
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol count.
Definition fbag1.h:375
const core::identifier_string & count_all_name()
Generate identifier #.
Definition fbag1.h:711
function_symbol_vector fbag_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for fbag.
Definition fbag1.h:855
implementation_map fbag_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition fbag1.h:188
const core::identifier_string & fset2fbag_name()
Generate identifier @fset2fbag.
Definition fbag1.h:457
application fset2fbag(const sort_expression &s, const data_expression &arg0)
Application of function symbol @fset2fbag.
Definition fbag1.h:491
container_sort fbag(const sort_expression &s)
Constructor for sort expression FBag(S)
Definition fbag1.h:40
application pick(const sort_expression &s, const data_expression &arg0)
Application of function symbol pick.
Definition fbag1.h:807
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition fbag1.h:554
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
Definition fbag1.h:413
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
Definition fbag1.h:667
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition fbag1.h:618
function_symbol pick(const sort_expression &s)
Constructor for function symbol pick.
Definition fbag1.h:783
const core::identifier_string & count_name()
Generate identifier count.
Definition fbag1.h:329
const core::identifier_string & cinsert_name()
Generate identifier @fbag_cinsert.
Definition fbag1.h:263
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition fbag1.h:575
function_symbol intersection(const sort_expression &s)
Constructor for function symbol *.
Definition fbag1.h:593
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition fbag1.h:927
function_symbol union_(const sort_expression &s)
Constructor for function symbol +.
Definition fbag1.h:529
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition fbag1.h:963
bool is_cinsert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_cinsert.
Definition fbag1.h:283
function_symbol cons_(const sort_expression &s)
Constructor for function symbol @fbag_cons.
Definition fbag1.h:207
bool is_insert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_insert.
Definition fbag1.h:116
implementation_map fbag_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for fbag.
Definition fbag1.h:892
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition fbag1.h:639
function_symbol count_all(const sort_expression &s)
Constructor for function symbol #.
Definition fbag1.h:721
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition fbag1.h:629
bool is_cons_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_cons.
Definition fbag1.h:217
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
Definition fbag1.h:428
function_symbol insert(const sort_expression &s)
Constructor for function symbol @fbag_insert.
Definition fbag1.h:106
application insert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fbag_insert.
Definition fbag1.h:132
void make_fset2fbag(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @fset2fbag.
Definition fbag1.h:501
void make_union(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition fbag1.h:565
const core::identifier_string & cons_name()
Generate identifier @fbag_cons.
Definition fbag1.h:197
application cinsert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fbag_cinsert.
Definition fbag1.h:299
bool is_fset2fbag_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset2fbag.
Definition fbag1.h:477
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
Definition fbag1.h:449
const core::identifier_string & empty_name()
Generate identifier {:}.
Definition fbag1.h:64
const core::identifier_string & difference_name()
Generate identifier -.
Definition fbag1.h:647
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
Definition fbag1.h:703
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of count.
Definition fbag1.h:385
bool is_cons_application(const atermpp::aterm &e)
Recogniser for application of @fbag_cons.
Definition fbag1.h:255
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
Definition fbag1.h:439
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition fbag1.h:939
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition fbag1.h:915
void make_count_all(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol #.
Definition fbag1.h:755
bool is_pick_function_symbol(const atermpp::aterm &e)
Recogniser for function pick.
Definition fbag1.h:793
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function count.
Definition fbag1.h:349
application count_all(const sort_expression &s, const data_expression &arg0)
Application of function symbol #.
Definition fbag1.h:745
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition fbag1.h:603
application cons_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fbag_cons.
Definition fbag1.h:233
const core::identifier_string & intersection_name()
Generate identifier *.
Definition fbag1.h:583
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition fbag1.h:951
bool is_pick_application(const atermpp::aterm &e)
Recogniser for application of pick.
Definition fbag1.h:827
function_symbol in(const sort_expression &s)
Constructor for function symbol in.
Definition fbag1.h:403
function_symbol_vector fbag_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for fbag.
Definition fbag1.h:162
bool is_count_all_application(const atermpp::aterm &e)
Recogniser for application of #.
Definition fbag1.h:765
function_symbol count(const sort_expression &s)
Constructor for function symbol count.
Definition fbag1.h:339
bool is_fbag(const sort_expression &e)
Recogniser for sort expression FBag(s)
Definition fbag1.h:51
void make_cinsert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fbag_cinsert.
Definition fbag1.h:311
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
Definition fbag1.h:682
function_symbol empty(const sort_expression &s)
Constructor for function symbol {:}.
Definition fbag1.h:74
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
Definition fbag1.h:693
function_symbol cinsert(const sort_expression &s)
Constructor for function symbol @fbag_cinsert.
Definition fbag1.h:273
bool is_cinsert_application(const atermpp::aterm &e)
Recogniser for application of @fbag_cinsert.
Definition fbag1.h:321
void make_insert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fbag_insert.
Definition fbag1.h:144
bool is_fset2fbag_application(const atermpp::aterm &e)
Recogniser for application of @fset2fbag.
Definition fbag1.h:511
bool is_count_all_function_symbol(const atermpp::aterm &e)
Recogniser for function #.
Definition fbag1.h:731
function_symbol_vector fbag_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for fbag.
Definition fbag1.h:869
void make_cons(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fbag_cons.
Definition fbag1.h:245
function_symbol fset2fbag(const sort_expression &s)
Constructor for function symbol @fset2fbag.
Definition fbag1.h:467
const core::identifier_string & pick_name()
Generate identifier pick.
Definition fbag1.h:773
const core::identifier_string & union_name()
Generate identifier +.
Definition fbag1.h:519
application count(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol count.
Definition fbag1.h:364
function_symbol difference(const sort_expression &s)
Constructor for function symbol -.
Definition fbag1.h:657
function_symbol_vector fbag_generate_functions_code(const sort_expression &s)
Give all system defined mappings for fbag.
Definition fbag1.h:835
bool is_insert_application(const atermpp::aterm &e)
Recogniser for application of @fbag_insert.
Definition fbag1.h:154
const core::identifier_string & insert_name()
Generate identifier @fbag_insert.
Definition fbag1.h:96
data_equation_vector fbag_generate_equations_code(const sort_expression &s)
Give all system defined equations for fbag.
Definition fbag1.h:973
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition fbag1.h:539
void make_pick(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol pick.
Definition fbag1.h:817
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition fbag1.h:903
function_symbol_vector fbag_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for fbag.
Definition fbag1.h:174
const core::identifier_string & in_name()
Generate identifier in.
Definition fbag1.h:393
Namespace for system defined sort fset.
Definition fset1.h:32
function_symbol insert(const sort_expression &s)
Constructor for function symbol @fset_insert.
Definition fset1.h:104
bool is_fset(const sort_expression &e)
Recogniser for sort expression FSet(s)
Definition fset1.h:49
function_symbol_vector fset_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for fset.
Definition fset1.h:735
void make_pick(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol pick.
Definition fset1.h:685
const core::identifier_string & pick_name()
Generate identifier pick.
Definition fset1.h:641
application count(const sort_expression &s, const data_expression &arg0)
Application of function symbol #.
Definition fset1.h:613
bool is_empty_function_symbol(const atermpp::aterm &e)
Recogniser for function {}.
Definition fset1.h:82
application insert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @fset_insert.
Definition fset1.h:129
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
Definition fset1.h:379
bool is_cinsert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_cinsert.
Definition fset1.h:277
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function #.
Definition fset1.h:599
void make_cons(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @fset_cons.
Definition fset1.h:239
function_symbol_vector fset_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for fset.
Definition fset1.h:721
function_symbol cinsert(const sort_expression &s)
Constructor for function symbol @fset_cinsert.
Definition fset1.h:267
function_symbol_vector fset_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for fset.
Definition fset1.h:170
bool is_cons_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_cons.
Definition fset1.h:213
function_symbol_vector fset_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for fset.
Definition fset1.h:158
const core::identifier_string & empty_name()
Generate identifier {}.
Definition fset1.h:62
const core::identifier_string & intersection_name()
Generate identifier *.
Definition fset1.h:515
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
Definition fset1.h:358
bool is_insert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_insert.
Definition fset1.h:114
function_symbol_vector fset_generate_functions_code(const sort_expression &s)
Give all system defined mappings for fset.
Definition fset1.h:703
application cons_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @fset_cons.
Definition fset1.h:228
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
Definition fset1.h:407
function_symbol cons_(const sort_expression &s)
Constructor for function symbol @fset_cons.
Definition fset1.h:203
void make_union(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition fset1.h:497
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition fset1.h:561
implementation_map fset_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for fset.
Definition fset1.h:756
function_symbol empty(const sort_expression &s)
Constructor for function symbol {}.
Definition fset1.h:72
const core::identifier_string & difference_name()
Generate identifier -.
Definition fset1.h:387
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition fset1.h:471
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
Definition fset1.h:433
function_symbol intersection(const sort_expression &s)
Constructor for function symbol *.
Definition fset1.h:525
void make_cinsert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fset_cinsert.
Definition fset1.h:305
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition fset1.h:779
function_symbol difference(const sort_expression &s)
Constructor for function symbol -.
Definition fset1.h:397
void make_insert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @fset_insert.
Definition fset1.h:140
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition fset1.h:535
const core::identifier_string & cinsert_name()
Generate identifier @fset_cinsert.
Definition fset1.h:257
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
Definition fset1.h:343
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol #.
Definition fset1.h:623
bool is_pick_application(const atermpp::aterm &e)
Recogniser for application of pick.
Definition fset1.h:695
implementation_map fset_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition fset1.h:184
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition fset1.h:767
function_symbol in(const sort_expression &s)
Constructor for function symbol in.
Definition fset1.h:333
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
Definition fset1.h:443
const core::identifier_string & count_name()
Generate identifier #.
Definition fset1.h:579
bool is_pick_function_symbol(const atermpp::aterm &e)
Recogniser for function pick.
Definition fset1.h:661
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition fset1.h:803
data_equation_vector fset_generate_equations_code(const sort_expression &s)
Give all system defined equations for fset.
Definition fset1.h:837
const core::identifier_string & union_name()
Generate identifier +.
Definition fset1.h:451
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition fset1.h:791
function_symbol pick(const sort_expression &s)
Constructor for function symbol pick.
Definition fset1.h:651
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
Definition fset1.h:369
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition fset1.h:815
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of #.
Definition fset1.h:633
function_symbol count(const sort_expression &s)
Constructor for function symbol #.
Definition fset1.h:589
bool is_cons_application(const atermpp::aterm &e)
Recogniser for application of @fset_cons.
Definition fset1.h:249
application cinsert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fset_cinsert.
Definition fset1.h:293
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition fset1.h:571
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
Definition fset1.h:422
const core::identifier_string & insert_name()
Generate identifier @fset_insert.
Definition fset1.h:94
container_sort fset(const sort_expression &s)
Constructor for sort expression FSet(S)
Definition fset1.h:38
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition fset1.h:486
const core::identifier_string & cons_name()
Generate identifier @fset_cons.
Definition fset1.h:193
application pick(const sort_expression &s, const data_expression &arg0)
Application of function symbol pick.
Definition fset1.h:675
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition fset1.h:827
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition fset1.h:550
function_symbol union_(const sort_expression &s)
Constructor for function symbol +.
Definition fset1.h:461
const core::identifier_string & in_name()
Generate identifier in.
Definition fset1.h:323
bool is_cinsert_application(const atermpp::aterm &e)
Recogniser for application of @fset_cinsert.
Definition fset1.h:315
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition fset1.h:507
bool is_insert_application(const atermpp::aterm &e)
Recogniser for application of @fset_insert.
Definition fset1.h:150
Namespace for system defined sort nat.
const core::identifier_string & succ_name()
Generate identifier succ.
Definition nat1.h:573
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition nat1.h:2316
application cpair(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @cPair.
Definition nat1.h:224
bool is_cpair_application(const atermpp::aterm &e)
Recogniser for application of @cPair.
Definition nat1.h:245
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition nat1.h:952
const function_symbol & generalised_divmod()
Constructor for function symbol @gdivmod.
Definition nat1.h:2036
bool is_natpred_function_symbol(const atermpp::aterm &e)
Recogniser for function @natpred.
Definition nat1.h:717
function_symbol maximum(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:419
const core::identifier_string & sqrt_nat_aux_func_name()
Generate identifier @sqrt_nat.
Definition nat1.h:1772
bool is_pos2nat_function_symbol(const atermpp::aterm &e)
Recogniser for function Pos2Nat.
Definition nat1.h:307
function_symbol succ(const sort_expression &s0)
Definition nat1.h:581
const function_symbol & monus()
Constructor for function symbol @monus.
Definition nat1.h:1388
void make_sqrt(data_expression &result, const data_expression &arg0)
Make an application of function symbol sqrt.
Definition nat1.h:1754
void make_generalised_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @gdivmod.
Definition nat1.h:2074
const function_symbol & c0()
Constructor for function symbol @c0.
Definition nat1.h:105
bool is_swap_zero_add_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_add.
Definition nat1.h:1566
void make_dub(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @dub.
Definition nat1.h:805
void make_div(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol div.
Definition nat1.h:1157
application sqrt_nat_aux_func(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @sqrt_nat.
Definition nat1.h:1808
const core::identifier_string & maximum_name()
Generate identifier max.
Definition nat1.h:411
void make_mod(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol mod.
Definition nat1.h:1221
application generalised_divmod(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @gdivmod.
Definition nat1.h:2062
bool is_swap_zero_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero.
Definition nat1.h:1462
bool is_cnat_application(const atermpp::aterm &e)
Recogniser for application of @cNat.
Definition nat1.h:181
const core::identifier_string & mod_name()
Generate identifier mod.
Definition nat1.h:1175
bool is_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @gdivmod.
Definition nat1.h:2084
bool is_div_application(const atermpp::aterm &e)
Recogniser for application of div.
Definition nat1.h:1167
void make_doubly_generalised_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @ggdivmod.
Definition nat1.h:2140
const core::identifier_string & swap_zero_min_name()
Generate identifier @swap_zero_min.
Definition nat1.h:1574
const function_symbol & divmod()
Constructor for function symbol @divmod.
Definition nat1.h:1972
bool is_pos2nat_application(const atermpp::aterm &e)
Recogniser for application of Pos2Nat.
Definition nat1.h:341
const function_symbol & cnat()
Constructor for function symbol @cNat.
Definition nat1.h:137
application dubsucc(const data_expression &arg0)
Application of function symbol @dubsucc.
Definition nat1.h:857
void make_pred(data_expression &result, const data_expression &arg0)
Make an application of function symbol pred.
Definition nat1.h:679
bool is_nat2pos_application(const atermpp::aterm &e)
Recogniser for application of Nat2Pos.
Definition nat1.h:403
bool is_mod_function_symbol(const atermpp::aterm &e)
Recogniser for function mod.
Definition nat1.h:1195
function_symbol exp(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:1247
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
Definition nat1.h:544
const core::identifier_string & times_name()
Generate identifier *.
Definition nat1.h:1034
const function_symbol & dubsucc()
Constructor for function symbol @dubsucc.
Definition nat1.h:833
const function_symbol & swap_zero_add()
Constructor for function symbol @swap_zero_add.
Definition nat1.h:1516
function_symbol_vector nat_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for nat.
Definition nat1.h:2212
data_equation_vector nat_generate_equations_code()
Give all system defined equations for nat.
Definition nat1.h:2349
const function_symbol & cpair()
Constructor for function symbol @cPair.
Definition nat1.h:199
const basic_sort & nat()
Constructor for sort expression Nat.
Definition nat1.h:43
const core::identifier_string & nat_name()
Definition nat1.h:34
const function_symbol & monus_on_pos()
Constructor for function symbol @monuspos.
Definition nat1.h:980
application exp(const data_expression &arg0, const data_expression &arg1)
Application of function symbol exp.
Definition nat1.h:1287
const core::identifier_string & exp_name()
Generate identifier exp.
Definition nat1.h:1239
const function_symbol & swap_zero()
Constructor for function symbol @swap_zero.
Definition nat1.h:1452
application swap_zero(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @swap_zero.
Definition nat1.h:1477
bool is_first_function_symbol(const atermpp::aterm &e)
Recogniser for function @first.
Definition nat1.h:1858
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
Definition nat1.h:488
void make_cpair(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @cPair.
Definition nat1.h:235
implementation_map nat_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition nat1.h:278
bool is_nat(const sort_expression &e)
Recogniser for sort expression Nat.
Definition nat1.h:53
bool is_doubly_generalised_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @ggdivmod.
Definition nat1.h:2112
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition nat1.h:925
function_symbol_vector nat_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for nat.
Definition nat1.h:2199
application sqrt(const data_expression &arg0)
Application of function symbol sqrt.
Definition nat1.h:1744
application pos2nat(const data_expression &arg0)
Application of function symbol Pos2Nat.
Definition nat1.h:321
void make_nat2pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol Nat2Pos.
Definition nat1.h:393
application first(const data_expression &arg0)
Application of function symbol @first.
Definition nat1.h:1872
const core::identifier_string & plus_name()
Generate identifier +.
Definition nat1.h:885
const core::identifier_string & natpair_name()
Definition nat1.h:63
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition nat1.h:2304
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
Definition nat1.h:592
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
Definition nat1.h:478
const core::identifier_string & div_name()
Generate identifier div.
Definition nat1.h:1111
bool is_monus_on_pos_application(const atermpp::aterm &e)
Recogniser for application of @monuspos.
Definition nat1.h:1026
const function_symbol & mod()
Constructor for function symbol mod.
Definition nat1.h:1185
void make_monus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monus.
Definition nat1.h:1424
const function_symbol & sqrt()
Constructor for function symbol sqrt.
Definition nat1.h:1720
void make_dubsucc(data_expression &result, const data_expression &arg0)
Make an application of function symbol @dubsucc.
Definition nat1.h:867
application even(const data_expression &arg0)
Application of function symbol @even.
Definition nat1.h:1350
const function_symbol & doubly_generalised_divmod()
Constructor for function symbol @ggdivmod.
Definition nat1.h:2102
const function_symbol & pred()
Constructor for function symbol pred.
Definition nat1.h:645
void make_even(data_expression &result, const data_expression &arg0)
Make an application of function symbol @even.
Definition nat1.h:1360
bool is_sqrt_nat_aux_func_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_nat.
Definition nat1.h:1792
const function_symbol & even()
Constructor for function symbol @even.
Definition nat1.h:1326
const core::identifier_string & first_name()
Generate identifier @first.
Definition nat1.h:1838
void make_swap_zero_monus(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @swap_zero_monus.
Definition nat1.h:1692
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
Definition nat1.h:627
bool is_dub_function_symbol(const atermpp::aterm &e)
Recogniser for function @dub.
Definition nat1.h:779
application cnat(const data_expression &arg0)
Application of function symbol @cNat.
Definition nat1.h:161
const function_symbol & natpred()
Constructor for function symbol @natpred.
Definition nat1.h:707
bool is_swap_zero_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero.
Definition nat1.h:1498
const core::identifier_string & even_name()
Generate identifier @even.
Definition nat1.h:1316
const core::identifier_string & swap_zero_name()
Generate identifier @swap_zero.
Definition nat1.h:1442
void make_pos2nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol Pos2Nat.
Definition nat1.h:331
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
Definition nat1.h:565
bool is_exp_function_symbol(const atermpp::aterm &e)
Recogniser for function exp.
Definition nat1.h:1271
bool is_monus_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus.
Definition nat1.h:1398
bool is_mod_application(const atermpp::aterm &e)
Recogniser for application of mod.
Definition nat1.h:1231
bool is_even_function_symbol(const atermpp::aterm &e)
Recogniser for function @even.
Definition nat1.h:1336
const core::identifier_string & pred_name()
Generate identifier pred.
Definition nat1.h:635
bool is_exp_application(const atermpp::aterm &e)
Recogniser for application of exp.
Definition nat1.h:1308
const function_symbol & swap_zero_min()
Constructor for function symbol @swap_zero_min.
Definition nat1.h:1584
function_symbol minimum(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:504
const function_symbol & sqrt_nat_aux_func()
Constructor for function symbol @sqrt_nat.
Definition nat1.h:1782
bool is_last_application(const atermpp::aterm &e)
Recogniser for application of @last.
Definition nat1.h:1954
void make_exp(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol exp.
Definition nat1.h:1298
const function_symbol & div()
Constructor for function symbol div.
Definition nat1.h:1121
application last(const data_expression &arg0)
Application of function symbol @last.
Definition nat1.h:1934
const core::identifier_string & doubly_generalised_divmod_name()
Generate identifier @ggdivmod.
Definition nat1.h:2092
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
Definition nat1.h:617
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
Definition nat1.h:451
bool is_swap_zero_min_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_min.
Definition nat1.h:1634
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:893
const core::identifier_string & dubsucc_name()
Generate identifier @dubsucc.
Definition nat1.h:823
bool is_first_application(const atermpp::aterm &e)
Recogniser for application of @first.
Definition nat1.h:1892
bool is_sqrt_application(const atermpp::aterm &e)
Recogniser for application of sqrt.
Definition nat1.h:1764
const function_symbol & first()
Constructor for function symbol @first.
Definition nat1.h:1848
void make_first(data_expression &result, const data_expression &arg0)
Make an application of function symbol @first.
Definition nat1.h:1882
bool is_pred_function_symbol(const atermpp::aterm &e)
Recogniser for function pred.
Definition nat1.h:655
bool is_generalised_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @gdivmod.
Definition nat1.h:2046
application swap_zero_add(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @swap_zero_add.
Definition nat1.h:1543
void make_swap_zero_add(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @swap_zero_add.
Definition nat1.h:1556
const core::identifier_string & swap_zero_monus_name()
Generate identifier @swap_zero_monus.
Definition nat1.h:1642
function_symbol_vector nat_generate_functions_code()
Give all system defined mappings for nat.
Definition nat1.h:2157
bool is_cpair_function_symbol(const atermpp::aterm &e)
Recogniser for function @cPair.
Definition nat1.h:209
application div(const data_expression &arg0, const data_expression &arg1)
Application of function symbol div.
Definition nat1.h:1146
bool is_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod.
Definition nat1.h:1982
const function_symbol & swap_zero_monus()
Constructor for function symbol @swap_zero_monus.
Definition nat1.h:1652
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition nat1.h:1093
application swap_zero_min(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @swap_zero_min.
Definition nat1.h:1611
bool is_c0_function_symbol(const atermpp::aterm &e)
Recogniser for function @c0.
Definition nat1.h:115
const core::identifier_string & generalised_divmod_name()
Generate identifier @gdivmod.
Definition nat1.h:2026
application doubly_generalised_divmod(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @ggdivmod.
Definition nat1.h:2128
const function_symbol & nat2pos()
Constructor for function symbol Nat2Pos.
Definition nat1.h:359
const core::identifier_string & monus_name()
Generate identifier @monus.
Definition nat1.h:1378
application monus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @monus.
Definition nat1.h:1413
const core::identifier_string & cpair_name()
Generate identifier @cPair.
Definition nat1.h:189
const core::identifier_string & nat2pos_name()
Generate identifier Nat2Pos.
Definition nat1.h:349
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition nat1.h:2328
void make_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @divmod.
Definition nat1.h:2008
application dub(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @dub.
Definition nat1.h:794
implementation_map nat_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for nat.
Definition nat1.h:2257
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition nat1.h:2292
const basic_sort & natpair()
Constructor for sort expression @NatPair.
Definition nat1.h:72
application pred(const data_expression &arg0)
Application of function symbol pred.
Definition nat1.h:669
application succ(const data_expression &arg0)
Application of function symbol succ.
Definition nat1.h:607
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition nat1.h:2280
bool is_swap_zero_monus_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_monus.
Definition nat1.h:1702
void make_swap_zero_min(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @swap_zero_min.
Definition nat1.h:1624
const core::identifier_string & dub_name()
Generate identifier @dub.
Definition nat1.h:759
const core::identifier_string & cnat_name()
Generate identifier @cNat.
Definition nat1.h:127
const core::identifier_string & c0_name()
Generate identifier @c0.
Definition nat1.h:95
application natpred(const data_expression &arg0)
Application of function symbol @natpred.
Definition nat1.h:731
application divmod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @divmod.
Definition nat1.h:1997
bool is_swap_zero_add_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_add.
Definition nat1.h:1526
bool is_natpair(const sort_expression &e)
Recogniser for sort expression @NatPair.
Definition nat1.h:82
bool is_swap_zero_monus_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_monus.
Definition nat1.h:1662
const core::identifier_string & pos2nat_name()
Generate identifier Pos2Nat.
Definition nat1.h:287
const core::identifier_string & last_name()
Generate identifier @last.
Definition nat1.h:1900
const core::identifier_string & minimum_name()
Generate identifier min.
Definition nat1.h:496
void make_sqrt_nat_aux_func(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @sqrt_nat.
Definition nat1.h:1820
bool is_sqrt_nat_aux_func_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_nat.
Definition nat1.h:1830
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition nat1.h:2268
bool is_sqrt_function_symbol(const atermpp::aterm &e)
Recogniser for function sqrt.
Definition nat1.h:1730
application mod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol mod.
Definition nat1.h:1210
bool is_cnat_function_symbol(const atermpp::aterm &e)
Recogniser for function @cNat.
Definition nat1.h:147
void make_monus_on_pos(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monuspos.
Definition nat1.h:1016
function_symbol_vector nat_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for nat.
Definition nat1.h:264
const function_symbol & last()
Constructor for function symbol @last.
Definition nat1.h:1910
const core::identifier_string & monus_on_pos_name()
Generate identifier @monuspos.
Definition nat1.h:970
bool is_natpred_application(const atermpp::aterm &e)
Recogniser for application of @natpred.
Definition nat1.h:751
bool is_pred_application(const atermpp::aterm &e)
Recogniser for application of pred.
Definition nat1.h:689
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition nat1.h:962
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
Definition nat1.h:467
bool is_monus_on_pos_function_symbol(const atermpp::aterm &e)
Recogniser for function @monuspos.
Definition nat1.h:990
void make_swap_zero(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @swap_zero.
Definition nat1.h:1488
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
Definition nat1.h:555
const core::identifier_string & swap_zero_add_name()
Generate identifier @swap_zero_add.
Definition nat1.h:1506
bool is_dubsucc_function_symbol(const atermpp::aterm &e)
Recogniser for function @dubsucc.
Definition nat1.h:843
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition nat1.h:941
bool is_dubsucc_application(const atermpp::aterm &e)
Recogniser for application of @dubsucc.
Definition nat1.h:877
bool is_swap_zero_min_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_min.
Definition nat1.h:1594
function_symbol_vector nat_generate_constructors_code()
Give all system defined constructors for nat.
Definition nat1.h:252
const core::identifier_string & sqrt_name()
Generate identifier sqrt.
Definition nat1.h:1710
bool is_doubly_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @ggdivmod.
Definition nat1.h:2150
application monus_on_pos(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @monuspos.
Definition nat1.h:1005
bool is_last_function_symbol(const atermpp::aterm &e)
Recogniser for function @last.
Definition nat1.h:1920
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition nat1.h:1082
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition nat1.h:1103
bool is_div_function_symbol(const atermpp::aterm &e)
Recogniser for function div.
Definition nat1.h:1131
const core::identifier_string & divmod_name()
Generate identifier @divmod.
Definition nat1.h:1962
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
Definition nat1.h:528
function_symbol times(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:1042
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition nat1.h:1066
void make_natpred(data_expression &result, const data_expression &arg0)
Make an application of function symbol @natpred.
Definition nat1.h:741
bool is_dub_application(const atermpp::aterm &e)
Recogniser for application of @dub.
Definition nat1.h:815
bool is_nat2pos_function_symbol(const atermpp::aterm &e)
Recogniser for function Nat2Pos.
Definition nat1.h:369
const function_symbol & dub()
Constructor for function symbol @dub.
Definition nat1.h:769
void make_cnat(data_expression &result, const data_expression &arg0)
Make an application of function symbol @cNat.
Definition nat1.h:171
application swap_zero_monus(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @swap_zero_monus.
Definition nat1.h:1679
const core::identifier_string & natpred_name()
Generate identifier @natpred.
Definition nat1.h:697
const function_symbol & pos2nat()
Constructor for function symbol Pos2Nat.
Definition nat1.h:297
void make_last(data_expression &result, const data_expression &arg0)
Make an application of function symbol @last.
Definition nat1.h:1944
application nat2pos(const data_expression &arg0)
Application of function symbol Nat2Pos.
Definition nat1.h:383
bool is_monus_application(const atermpp::aterm &e)
Recogniser for application of @monus.
Definition nat1.h:1434
bool is_divmod_application(const atermpp::aterm &e)
Recogniser for application of @divmod.
Definition nat1.h:2018
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
Definition nat1.h:2340
bool is_even_application(const atermpp::aterm &e)
Recogniser for application of @even.
Definition nat1.h:1370
Namespace for system defined sort pos.
void make_powerlog2_pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol @powerlog2.
Definition pos1.h:683
bool is_pos_predecessor_function_symbol(const atermpp::aterm &e)
Recogniser for function @pospred.
Definition pos1.h:403
bool is_add_with_carry_function_symbol(const atermpp::aterm &e)
Recogniser for function @addc.
Definition pos1.h:529
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
Definition pos1.h:292
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition pos1.h:785
void make_add_with_carry(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @addc.
Definition pos1.h:557
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition pos1.h:621
bool is_cdub_function_symbol(const atermpp::aterm &e)
Recogniser for function @cDub.
Definition pos1.h:117
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
Definition pos1.h:213
implementation_map pos_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for pos.
Definition pos1.h:750
application succ(const data_expression &arg0)
Application of function symbol succ.
Definition pos1.h:355
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
Definition pos1.h:239
const function_symbol & powerlog2_pos()
Constructor for function symbol @powerlog2.
Definition pos1.h:649
bool is_pos(const sort_expression &e)
Recogniser for sort expression Pos.
Definition pos1.h:52
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition pos1.h:821
const function_symbol & c1()
Constructor for function symbol @c1.
Definition pos1.h:75
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
Definition pos1.h:365
const function_symbol & add_with_carry()
Constructor for function symbol @addc.
Definition pos1.h:519
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition pos1.h:797
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition pos1.h:610
bool is_cdub_application(const atermpp::aterm &e)
Recogniser for application of @cDub.
Definition pos1.h:153
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
Definition pos1.h:303
function_symbol_vector pos_generate_functions_code()
Give all system defined mappings for pos.
Definition pos1.h:700
const function_symbol & pos_predecessor()
Constructor for function symbol @pospred.
Definition pos1.h:393
const core::identifier_string & cdub_name()
Generate identifier @cDub.
Definition pos1.h:97
const core::identifier_string & c1_name()
Generate identifier @c1.
Definition pos1.h:65
const function_symbol & plus()
Constructor for function symbol +.
Definition pos1.h:455
bool is_add_with_carry_application(const atermpp::aterm &e)
Recogniser for application of @addc.
Definition pos1.h:567
const function_symbol & maximum()
Constructor for function symbol max.
Definition pos1.h:203
const core::identifier_string & powerlog2_pos_name()
Generate identifier @powerlog2.
Definition pos1.h:639
bool is_powerlog2_pos_application(const atermpp::aterm &e)
Recogniser for application of @powerlog2.
Definition pos1.h:693
const core::identifier_string & times_name()
Generate identifier *.
Definition pos1.h:575
function_symbol_vector pos_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for pos.
Definition pos1.h:171
bool is_c1_function_symbol(const atermpp::aterm &e)
Recogniser for function @c1.
Definition pos1.h:85
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition pos1.h:809
const core::identifier_string & plus_name()
Generate identifier +.
Definition pos1.h:445
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
Definition pos1.h:277
const function_symbol & cdub()
Constructor for function symbol @cDub.
Definition pos1.h:107
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition pos1.h:773
application add_with_carry(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @addc.
Definition pos1.h:545
implementation_map pos_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition pos1.h:184
application powerlog2_pos(const data_expression &arg0)
Application of function symbol @powerlog2.
Definition pos1.h:673
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition pos1.h:480
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition pos1.h:631
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition pos1.h:595
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition pos1.h:491
const core::identifier_string & add_with_carry_name()
Generate identifier @addc.
Definition pos1.h:509
const function_symbol & times()
Constructor for function symbol *.
Definition pos1.h:585
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
Definition pos1.h:341
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition pos1.h:465
const core::identifier_string & minimum_name()
Generate identifier min.
Definition pos1.h:257
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
Definition pos1.h:313
data_equation_vector pos_generate_equations_code()
Give all system defined equations for pos.
Definition pos1.h:830
application pos_predecessor(const data_expression &arg0)
Application of function symbol @pospred.
Definition pos1.h:417
bool is_powerlog2_pos_function_symbol(const atermpp::aterm &e)
Recogniser for function @powerlog2.
Definition pos1.h:659
application cdub(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @cDub.
Definition pos1.h:132
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
Definition pos1.h:375
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
Definition pos1.h:228
const basic_sort & pos()
Constructor for sort expression Pos.
Definition pos1.h:42
const core::identifier_string & maximum_name()
Generate identifier max.
Definition pos1.h:193
const core::identifier_string & pos_name()
Definition pos1.h:33
const function_symbol & minimum()
Constructor for function symbol min.
Definition pos1.h:267
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition pos1.h:761
function_symbol_vector pos_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for pos.
Definition pos1.h:717
function_symbol_vector pos_generate_constructors_code()
Give all system defined constructors for pos.
Definition pos1.h:160
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
Definition pos1.h:249
bool is_pos_predecessor_application(const atermpp::aterm &e)
Recogniser for application of @pospred.
Definition pos1.h:437
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition pos1.h:501
const function_symbol & succ()
Constructor for function symbol succ.
Definition pos1.h:331
void make_cdub(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @cDub.
Definition pos1.h:143
const core::identifier_string & pos_predecessor_name()
Generate identifier @pospred.
Definition pos1.h:383
function_symbol_vector pos_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for pos.
Definition pos1.h:730
const core::identifier_string & succ_name()
Generate identifier succ.
Definition pos1.h:321
void make_pos_predecessor(data_expression &result, const data_expression &arg0)
Make an application of function symbol @pospred.
Definition pos1.h:427
Namespace for system defined sort set_.
Definition set1.h:33
const core::identifier_string & fset_intersection_name()
Generate identifier @fset_inter.
Definition set1.h:1035
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
Definition set1.h:330
function_symbol true_function(const sort_expression &s)
Constructor for function symbol @true_.
Definition set1.h:725
const core::identifier_string & or_function_name()
Generate identifier @or_.
Definition set1.h:903
bool is_set_comprehension_application(const atermpp::aterm &e)
Recogniser for application of @setcomp.
Definition set1.h:276
const core::identifier_string & constructor_name()
Generate identifier @set.
Definition set1.h:63
implementation_map set_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for set_.
Definition set1.h:1174
application fset_intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fset_inter.
Definition set1.h:1072
bool is_false_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @false_.
Definition set1.h:673
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
Definition set1.h:608
bool is_not_function_application(const atermpp::aterm &e)
Recogniser for application of @not_.
Definition set1.h:831
bool is_and_function_application(const atermpp::aterm &e)
Recogniser for application of @and_.
Definition set1.h:895
void make_or_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @or_.
Definition set1.h:949
function_symbol_vector set_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for set_.
Definition set1.h:1130
application or_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @or_.
Definition set1.h:938
bool is_fset_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_inter.
Definition set1.h:1055
bool is_set(const sort_expression &e)
Recogniser for sort expression Set(s)
Definition set1.h:50
function_symbol or_function(const sort_expression &s)
Constructor for function symbol @or_.
Definition set1.h:913
void make_complement(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol !.
Definition set1.h:392
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition set1.h:479
const core::identifier_string & false_function_name()
Generate identifier @false_.
Definition set1.h:653
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
Definition set1.h:303
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
Definition set1.h:1257
bool is_true_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @true_.
Definition set1.h:735
bool is_complement_application(const atermpp::aterm &e)
Recogniser for application of !.
Definition set1.h:402
bool is_or_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @or_.
Definition set1.h:923
function_symbol fset_intersection(const sort_expression &s)
Constructor for function symbol @fset_inter.
Definition set1.h:1045
const core::identifier_string & set_comprehension_name()
Generate identifier @setcomp.
Definition set1.h:222
void make_fset_union(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fset_union.
Definition set1.h:1017
bool is_fset_union_application(const atermpp::aterm &e)
Recogniser for application of @fset_union.
Definition set1.h:1027
bool is_false_function_application(const atermpp::aterm &e)
Recogniser for application of @false_.
Definition set1.h:707
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition set1.h:1185
bool is_not_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @not_.
Definition set1.h:797
function_symbol and_function(const sort_expression &s)
Constructor for function symbol @and_.
Definition set1.h:849
bool is_set_comprehension_function_symbol(const atermpp::aterm &e)
Recogniser for function @setcomp.
Definition set1.h:242
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
Definition set1.h:340
const core::identifier_string & not_function_name()
Generate identifier @not_.
Definition set1.h:777
application not_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @not_.
Definition set1.h:811
const core::identifier_string & in_name()
Generate identifier in.
Definition set1.h:284
function_symbol_vector set_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for set_.
Definition set1.h:127
bool is_fset_intersection_application(const atermpp::aterm &e)
Recogniser for application of @fset_inter.
Definition set1.h:1095
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
Definition set1.h:645
function_symbol not_function(const sort_expression &s)
Constructor for function symbol @not_.
Definition set1.h:787
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition set1.h:1209
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition set1.h:458
bool is_constructor_application(const atermpp::aterm &e)
Recogniser for application of @set.
Definition set1.h:119
const core::identifier_string & fset_union_name()
Generate identifier @fset_union.
Definition set1.h:967
bool is_set_fset_application(const atermpp::aterm &e)
Recogniser for application of @setfset.
Definition set1.h:214
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition set1.h:554
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
Definition set1.h:624
application complement(const sort_expression &s, const data_expression &arg0)
Application of function symbol !.
Definition set1.h:382
const core::identifier_string & complement_name()
Generate identifier !.
Definition set1.h:348
function_symbol intersection(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
Definition set1.h:495
application set_fset(const sort_expression &s, const data_expression &arg0)
Application of function symbol @setfset.
Definition set1.h:194
const core::identifier_string & and_function_name()
Generate identifier @and_.
Definition set1.h:839
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition set1.h:543
bool is_fset_union_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_union.
Definition set1.h:987
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition set1.h:1233
function_symbol fset_union(const sort_expression &s)
Constructor for function symbol @fset_union.
Definition set1.h:977
void make_and_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @and_.
Definition set1.h:885
container_sort set_(const sort_expression &s)
Constructor for sort expression Set(S)
Definition set1.h:39
bool is_set_fset_function_symbol(const atermpp::aterm &e)
Recogniser for function @setfset.
Definition set1.h:180
application set_comprehension(const sort_expression &s, const data_expression &arg0)
Application of function symbol @setcomp.
Definition set1.h:256
const core::identifier_string & intersection_name()
Generate identifier *.
Definition set1.h:487
void make_fset_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fset_inter.
Definition set1.h:1085
function_symbol constructor(const sort_expression &s)
Constructor for function symbol @set.
Definition set1.h:73
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition set1.h:1245
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition set1.h:1197
function_symbol false_function(const sort_expression &s)
Constructor for function symbol @false_.
Definition set1.h:663
void make_constructor(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @set.
Definition set1.h:109
const core::identifier_string & set_fset_name()
Generate identifier @setfset.
Definition set1.h:160
const core::identifier_string & union_name()
Generate identifier +.
Definition set1.h:410
bool is_complement_function_symbol(const atermpp::aterm &e)
Recogniser for function !.
Definition set1.h:368
function_symbol in(const sort_expression &, const sort_expression &s0, const sort_expression &s1)
Definition set1.h:292
function_symbol union_(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
Definition set1.h:418
bool is_constructor_function_symbol(const atermpp::aterm &e)
Recogniser for function @set.
Definition set1.h:83
function_symbol_vector set_generate_functions_code(const sort_expression &s)
Give all system defined mappings for set_.
Definition set1.h:1103
application fset_union(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fset_union.
Definition set1.h:1004
function_symbol_vector set_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for set_.
Definition set1.h:138
const core::identifier_string & difference_name()
Generate identifier -.
Definition set1.h:572
void make_set_comprehension(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @setcomp.
Definition set1.h:266
application true_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @true_.
Definition set1.h:749
void make_not_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @not_.
Definition set1.h:821
bool is_or_function_application(const atermpp::aterm &e)
Recogniser for application of @or_.
Definition set1.h:959
const core::identifier_string & true_function_name()
Generate identifier @true_.
Definition set1.h:715
void make_false_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @false_.
Definition set1.h:697
void make_true_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @true_.
Definition set1.h:759
application false_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @false_.
Definition set1.h:687
function_symbol difference(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
Definition set1.h:580
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition set1.h:442
function_symbol complement(const sort_expression &s)
Constructor for function symbol !.
Definition set1.h:358
bool is_true_function_application(const atermpp::aterm &e)
Recogniser for application of @true_.
Definition set1.h:769
function_symbol set_fset(const sort_expression &s)
Constructor for function symbol @setfset.
Definition set1.h:170
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
Definition set1.h:635
implementation_map set_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition set1.h:151
function_symbol set_comprehension(const sort_expression &s)
Constructor for function symbol @setcomp.
Definition set1.h:232
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
Definition set1.h:319
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition set1.h:564
data_equation_vector set_generate_equations_code(const sort_expression &s)
Give all system defined equations for set_.
Definition set1.h:1267
application and_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @and_.
Definition set1.h:874
function_symbol_vector set_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for set_.
Definition set1.h:1144
bool is_and_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @and_.
Definition set1.h:859
void make_set_fset(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @setfset.
Definition set1.h:204
void make_union(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition set1.h:469
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition set1.h:527
application constructor(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @set.
Definition set1.h:98
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition set1.h:1221
std::string pp(const data::structured_sort_constructor_argument &x, bool arg0)
Definition data.cpp:71
void swap(fset_container &t1, fset_container &t2) noexcept
\brief swap overload
void make_data_expression(data_expression &result)
void make_function_symbol(atermpp::aterm &t, const ARGUMENTS &... args)
data::data_equation normalize_sorts(const data::data_equation &x, const data::sort_specification &sortspec)
Definition data.cpp:82
bool is_greater_application(const DataExpression &e)
Recogniser for application of >
Definition standard.h:348
bool is_less_total_application(const DataExpression &e)
Recogniser for application of less_total.
Definition standard.h:422
void normalize_sorts(data::data_equation_vector &x, const data::sort_specification &sortspec)
Definition data.cpp:84
void swap(function_sort &t1, function_sort &t2) noexcept
\brief swap overload
bool is_greater_function_symbol(const DataExpression &e)
Recogniser for function >
Definition standard.h:328
void swap(container_sort &t1, container_sort &t2) noexcept
\brief swap overload
bool is_structured_sort(const atermpp::aterm &x)
Returns true if the term t is a structured sort.
bool is_less_total_function_symbol(const DataExpression &e)
Recogniser for function less_total.
Definition standard.h:402
data::data_equation_list normalize_sorts(const data::data_equation_list &x, const data::sort_specification &sortspec)
Definition data.cpp:83
std::string pp(const data::exists &x, bool arg0)
Definition data.cpp:53
bool is_data_equation(const atermpp::aterm &t)
Recognizer function.
std::string pp(const data::untyped_identifier_assignment &x, bool arg0)
Definition data.cpp:74
std::ostream & operator<<(std::ostream &out, const bag_comprehension_binder &x)
function_symbol less_equal(const sort_expression &s)
Constructor for function symbol <=.
Definition standard.h:282
std::ostream & operator<<(std::ostream &out, const set_comprehension_binder &x)
bool is_set_container(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const container_sort &x)
void swap(untyped_sort &t1, untyped_sort &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const basic_sort &x)
Definition basic_sort.h:78
function_symbol_vector standard_generate_functions_code(const sort_expression &s)
Give all standard system defined functions for sort s.
Definition standard.h:430
std::set< data::variable > find_all_variables(const data::data_expression_list &x)
Definition data.cpp:94
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
std::string pp(const data::list_container &x, bool arg0)
Definition data.cpp:63
bool is_application_no_check(const atermpp::aterm &x)
Returns true if the term t is an application, but it does not check whether an application symbol of ...
function_symbol not_equal_to(const sort_expression &s)
Constructor for function symbol !=.
Definition standard.h:168
bool is_equal_to_function_symbol(const DataExpression &e)
Recogniser for function ==.
Definition standard.h:140
data_expression_list make_data_expression_list(Container const &r, typename atermpp::enable_if_container< Container, data_expression >::type *=nullptr)
Converts an container with data expressions to data_expression_list.
std::set< data::sort_expression > find_sort_expressions(const data::data_expression &x)
Definition data.cpp:91
void swap(set_comprehension_binder &t1, set_comprehension_binder &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const container_type &x)
data::data_equation translate_user_notation(const data::data_equation &x)
Definition data.cpp:89
std::ostream & operator<<(std::ostream &out, const list_container &x)
std::ostream & operator<<(std::ostream &out, const untyped_set_or_bag_comprehension_binder &x)
bool is_application(const data_expression &t)
Returns true if the term t is an application.
bool is_list_container(const atermpp::aterm &x)
bool is_if_application(const DataExpression &e)
Recogniser for application of if.
Definition standard.h:237
void make_basic_sort(atermpp::aterm &t, const ARGUMENTS &... args)
Definition basic_sort.h:65
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &dom4, const sort_expression &codomain)
Convenience constructor for function sort with domain size 4.
void swap(fbag_container &t1, fbag_container &t2) noexcept
\brief swap overload
bool is_not_equal_to_application(const DataExpression &e)
Recogniser for application of !=.
Definition standard.h:197
void swap(basic_sort &t1, basic_sort &t2) noexcept
\brief swap overload
Definition basic_sort.h:84
std::string pp(const data::container_type &x, bool arg0)
Definition data.cpp:49
std::set< data::variable > find_all_variables(const data::data_expression &x)
Definition data.cpp:93
void swap(list_container &t1, list_container &t2) noexcept
\brief swap overload
void swap(exists_binder &t1, exists_binder &t2) noexcept
\brief swap overload
function_symbol less(const sort_expression &s)
Constructor for function symbol <.
Definition standard.h:245
bool is_where_clause(const atermpp::aterm &x)
Returns true if the term t is a where clause.
std::string pp(const data::set_container &x, bool arg0)
Definition data.cpp:67
bool is_untyped_possible_sorts(const atermpp::aterm &x)
Returns true if the term t is an expression for multiple possible sorts.
bool is_untyped_sort(const atermpp::aterm &x)
Returns true if the term t is the unknown sort.
application less_equal(const data_expression &arg0, const data_expression &arg1)
Application of function symbol <=.
Definition standard.h:300
function_symbol less_total(const sort_expression &s)
Constructor for function symbol less_total.
Definition standard.h:393
std::ostream & operator<<(std::ostream &out, const fset_container &x)
bool is_greater_equal_application(const DataExpression &e)
Recogniser for application of >=.
Definition standard.h:385
std::string pp(const data::untyped_set_or_bag_comprehension_binder &x, bool arg0)
Definition data.cpp:77
application less(const data_expression &arg0, const data_expression &arg1)
Application of function symbol <.
Definition standard.h:263
data::data_expression translate_user_notation(const data::data_expression &x)
Definition data.cpp:88
std::string pp(const data::sort_expression_vector &x, bool arg0)
Definition data.cpp:25
std::string pp(const data::untyped_sort &x, bool arg0)
Definition data.cpp:78
std::string pp(const data::data_equation &x, bool arg0)
Definition data.cpp:50
application less_total(const data_expression &arg0, const data_expression &arg1)
Application of function symbol less_total.
Definition standard.h:411
std::string pp(const data::forall &x, bool arg0)
Definition data.cpp:56
void swap(set_container &t1, set_container &t2) noexcept
\brief swap overload
bool is_abstraction(const atermpp::aterm &x)
Returns true if the term t is an abstraction.
void make_variable(atermpp::aterm &t, const ARGUMENTS &... args)
Definition variable.h:77
std::string pp(const data::assignment_list &x, bool arg0)
Definition data.cpp:28
std::string pp(const data::untyped_identifier &x, bool arg0)
Definition data.cpp:73
application not_equal_to(const data_expression &arg0, const data_expression &arg1)
Application of function symbol !=.
Definition standard.h:186
std::string pp(const data::function_symbol_list &x, bool arg0)
Definition data.cpp:32
std::ostream & operator<<(std::ostream &out, const untyped_sort &x)
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &codomain)
Convenience constructor for function sort with domain size 1.
void swap(container_type &t1, container_type &t2) noexcept
\brief swap overload
application if_(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol if.
Definition standard.h:224
std::ostream & operator<<(std::ostream &out, const forall &x)
Definition forall.h:77
bool is_untyped_identifier(const atermpp::aterm &x)
Returns true if the term t is an identifier.
data_equation_vector standard_generate_equations_code(const sort_expression &s)
Give all standard system defined equations for sort s.
Definition standard.h:448
void swap(bag_container &t1, bag_container &t2) noexcept
\brief swap overload
std::string pp(const data::lambda_binder &x, bool arg0)
Definition data.cpp:62
void swap(untyped_set_or_bag_comprehension_binder &t1, untyped_set_or_bag_comprehension_binder &t2) noexcept
\brief swap overload
void swap(bag_comprehension_binder &t1, bag_comprehension_binder &t2) noexcept
\brief swap overload
bool is_set_comprehension_binder(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const alias &x)
Definition alias.h:91
void swap(forall_binder &t1, forall_binder &t2) noexcept
\brief swap overload
void swap(data_equation &t1, data_equation &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const forall_binder &x)
bool is_exists_binder(const atermpp::aterm &x)
std::set< data::variable > find_all_variables(const data::function_symbol &x)
Definition data.cpp:95
std::string pp(const data::application &x, bool arg0)
Definition data.cpp:40
bool is_not_equal_to_function_symbol(const DataExpression &e)
Recogniser for function !=.
Definition standard.h:177
std::string pp(const data::function_sort &x, bool arg0)
Definition data.cpp:59
void make_alias(atermpp::aterm &t, const ARGUMENTS &... args)
Definition alias.h:63
std::string pp(const data::abstraction &x, bool arg0)
Definition data.cpp:38
std::string pp(const data::bag_comprehension_binder &x, bool arg0)
Definition data.cpp:44
function_symbol greater_equal(const sort_expression &s)
Constructor for function symbol >=.
Definition standard.h:356
std::ostream & operator<<(std::ostream &out, const set_container &x)
std::string pp(const data::set_comprehension_binder &x, bool arg0)
Definition data.cpp:66
std::string pp(const data::assignment &x, bool arg0)
Definition data.cpp:41
std::string pp(const data::structured_sort &x, bool arg0)
Definition data.cpp:69
std::ostream & operator<<(std::ostream &out, const bag_container &x)
std::string pp(const data::basic_sort &x, bool arg0)
Definition data.cpp:46
std::ostream & operator<<(std::ostream &out, const exists_binder &x)
std::string pp(const data::exists_binder &x, bool arg0)
Definition data.cpp:54
void swap(forall &t1, forall &t2) noexcept
\brief swap overload
Definition forall.h:83
void swap(binder_type &t1, binder_type &t2) noexcept
\brief swap overload
Definition binder_type.h:66
std::string pp(const data::bag_comprehension &x, bool arg0)
Definition data.cpp:43
void make_forall(atermpp::aterm &result, ARGUMENTS... arguments)
Definition forall.h:63
std::ostream & operator<<(std::ostream &out, const lambda_binder &x)
bool is_container_sort(const atermpp::aterm &x)
Returns true if the term t is a container sort.
bool is_lambda_binder(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
Returns true if the term t is a universal quantification.
std::string pp(const data::variable &x, bool arg0)
Definition data.cpp:80
bool is_function_symbol(const atermpp::aterm &x)
Returns true if the term t is a function symbol.
bool is_fset_container(const atermpp::aterm &x)
bool is_less_function_symbol(const DataExpression &e)
Recogniser for function <.
Definition standard.h:254
std::ostream & operator<<(std::ostream &out, const data_equation &x)
bool is_basic_sort(const atermpp::aterm &x)
Returns true if the term t is a basic sort.
bool is_untyped_sort_variable(const atermpp::aterm &x)
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &dom4, const sort_expression &dom5, const sort_expression &dom6, const sort_expression &codomain)
Convenience constructor for function sort with domain size 6.
bool is_untyped_set_or_bag_comprehension_binder(const atermpp::aterm &x)
std::string pp(const data::where_clause &x, bool arg0)
Definition data.cpp:81
std::set< data::sort_expression > find_sort_expressions(const data::data_equation &x)
Definition data.cpp:90
std::ostream & operator<<(std::ostream &out, const function_sort &x)
std::set< data::function_symbol > find_function_symbols(const data::data_equation &x)
Definition data.cpp:100
std::string pp(const data::bag_container &x, bool arg0)
Definition data.cpp:45
void swap(function_symbol &t1, function_symbol &t2) noexcept
\brief swap overload
std::string pp(const data::alias &x, bool arg0)
Definition data.cpp:39
bool is_if_function_symbol(const DataExpression &e)
Recogniser for function if.
Definition standard.h:214
std::ostream & operator<<(std::ostream &out, const fbag_container &x)
std::set< data::variable > find_free_variables(const data::data_expression &x)
Definition data.cpp:98
application greater(const data_expression &arg0, const data_expression &arg1)
Application of function symbol >
Definition standard.h:337
void make_abstraction(atermpp::aterm &result, ARGUMENTS... arguments)
Definition abstraction.h:72
void swap(sort_expression &t1, sort_expression &t2) noexcept
\brief swap overload
std::set< data::variable > find_all_variables(const data::variable_list &x)
Definition data.cpp:97
bool is_untyped_set_or_bag_comprehension(const atermpp::aterm &x)
Returns true if the term t is a set/bag comprehension.
void swap(abstraction &t1, abstraction &t2) noexcept
\brief swap overload
Definition abstraction.h:97
void swap(alias &t1, alias &t2) noexcept
\brief swap overload
Definition alias.h:97
bool is_assignment(const atermpp::aterm &x)
Definition assignment.h:152
std::string pp(const data::structured_sort_constructor &x, bool arg0)
Definition data.cpp:70
std::set< data::sort_expression > find_sort_expressions(const data::sort_expression &x)
Definition data.cpp:92
std::string pp(const data::data_specification &x, bool arg0)
Definition data.cpp:52
std::string pp(const data::data_equation_list &x, bool arg0)
Definition data.cpp:36
std::string pp(const data::fset_container &x, bool arg0)
Definition data.cpp:58
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &codomain)
Convenience constructor for function sort with domain size 3.
std::string pp(const data::sort_expression &x, bool arg0)
Definition data.cpp:68
std::ostream & operator<<(std::ostream &out, const binder_type &x)
Definition binder_type.h:60
std::string pp(const data::untyped_set_or_bag_comprehension &x, bool arg0)
Definition data.cpp:76
std::pair< basic_sort_vector, alias_vector > parse_sort_specification(const std::string &text)
Definition data.cpp:251
void swap(lambda_binder &t1, lambda_binder &t2) noexcept
\brief swap overload
data::sort_expression normalize_sorts(const data::sort_expression &x, const data::sort_specification &sortspec)
Definition data.cpp:86
bool is_exists(const atermpp::aterm &x)
Returns true if the term t is an existential quantification.
std::string pp(const data::variable_list &x, bool arg0)
Definition data.cpp:30
std::ostream & operator<<(std::ostream &out, const data_expression &x)
application greater_equal(const data_expression &arg0, const data_expression &arg1)
Application of function symbol >=.
Definition standard.h:374
bool is_less_equal_function_symbol(const DataExpression &e)
Recogniser for function <=.
Definition standard.h:291
void make_data_equation(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_function_sort(const atermpp::aterm &x)
Returns true if the term t is a function sort.
bool is_greater_equal_function_symbol(const DataExpression &e)
Recogniser for function >=.
Definition standard.h:365
std::set< data::variable > find_free_variables(const data::data_expression_list &x)
Definition data.cpp:99
std::string pp(const data::data_expression &x, bool arg0)
Definition data.cpp:51
std::string pp(const data::lambda &x, bool arg0)
Definition data.cpp:61
bool is_bag_comprehension(const atermpp::aterm &x)
Returns true if the term t is a bag comprehension.
std::string pp(const data::fbag_container &x, bool arg0)
Definition data.cpp:55
bool is_set_comprehension(const atermpp::aterm &x)
Returns true if the term t is a set comprehension.
std::ostream & operator<<(std::ostream &out, const function_symbol &x)
bool is_bag_container(const atermpp::aterm &x)
std::string pp(const data::structured_sort_constructor_list &x, bool arg0)
Definition data.cpp:34
bool is_machine_number(const atermpp::aterm &x)
Returns true if the term t is a machine_number.
function_symbol equal_to(const sort_expression &s)
Constructor for function symbol ==.
Definition standard.h:131
std::string pp(const data::container_sort &x, bool arg0)
Definition data.cpp:48
data::variable_list normalize_sorts(const data::variable_list &x, const data::sort_specification &sortspec)
Definition data.cpp:87
const data_expression_list & variable_list_to_data_expression_list(const variable_list &l)
Transform a variable_list into a data_expression_list.
data::data_expression normalize_sorts(const data::data_expression &x, const data::sort_specification &sortspec)
Definition data.cpp:85
std::ostream & operator<<(std::ostream &out, const variable &x)
Definition variable.h:96
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &codomain)
Convenience constructor for function sort with domain size 2.
std::string pp(const data::untyped_sort_variable &x, bool arg0)
Definition data.cpp:79
std::string pp(const data::untyped_data_parameter &x, bool arg0)
Definition data.cpp:72
std::string pp(const data::binder_type &x, bool arg0)
Definition data.cpp:47
application equal_to(const data_expression &arg0, const data_expression &arg1)
Application of function symbol ==.
Definition standard.h:149
bool is_fbag_container(const atermpp::aterm &x)
bool is_lambda(const atermpp::aterm &x)
Returns true if the term t is a lambda abstraction.
bool is_untyped_identifier_assignment(const atermpp::aterm &x)
Definition assignment.h:248
bool is_alias(const atermpp::aterm &x)
Definition alias.h:78
std::set< data::variable > find_all_variables(const data::variable &x)
Definition data.cpp:96
bool is_constant(const data_expression &x)
bool is_forall_binder(const atermpp::aterm &x)
bool is_less_application(const DataExpression &e)
Recogniser for application of <.
Definition standard.h:274
std::set< core::identifier_string > find_identifiers(const data::variable_list &x)
Definition data.cpp:101
std::ostream & operator<<(std::ostream &out, const sort_expression &x)
bool search_variable(const data::data_expression &x, const data::variable &v)
Definition data.cpp:102
void make_container_sort(atermpp::aterm &t, const ARGUMENTS &... args)
void make_function_sort(atermpp::aterm &t, const ARGUMENTS &... args)
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &dom4, const sort_expression &dom5, const sort_expression &codomain)
Convenience constructor for function sort with domain size 5.
std::string pp(const data::sort_expression_list &x, bool arg0)
Definition data.cpp:24
std::string pp(const data::forall_binder &x, bool arg0)
Definition data.cpp:57
std::string pp(const data::untyped_possible_sorts &x, bool arg0)
Definition data.cpp:75
bool is_application(const atermpp::aterm &x)
Returns true if the term t is an application.
std::string pp(const data::function_symbol &x, bool arg0)
Definition data.cpp:60
std::set< data::variable > substitution_variables(const mutable_map_substitution<> &sigma)
Definition data.cpp:184
bool is_less_equal_application(const DataExpression &e)
Recogniser for application of <=.
Definition standard.h:311
bool is_bag_comprehension_binder(const atermpp::aterm &x)
function_symbol if_(const sort_expression &s)
Constructor for function symbol if.
Definition standard.h:205
std::string pp(const data::machine_number &x, bool arg0)
Definition data.cpp:64
bool is_equal_to_application(const DataExpression &e)
Recogniser for application of ==.
Definition standard.h:160
void swap(data_expression &t1, data_expression &t2) noexcept
\brief swap overload
void swap(variable &t1, variable &t2) noexcept
\brief swap overload
Definition variable.h:102
std::string pp(const data::assignment_expression &x, bool arg0)
Definition data.cpp:42
bool is_variable(const atermpp::aterm &x)
Returns true if the term t is a variable.
bool is_sort_expression(const atermpp::aterm &x)
Test for a sort_expression expression.
std::string pp(const data::set_comprehension &x, bool arg0)
Definition data.cpp:65
std::ostream & operator<<(std::ostream &out, const abstraction &x)
Definition abstraction.h:91
std::string pp(const data::data_expression_list &x, bool arg0)
Definition data.cpp:26
function_symbol greater(const sort_expression &s)
Constructor for function symbol >
Definition standard.h:319
expression builder that visits all sub expressions
Definition builder.h:32
void leave(const T &)
Definition builder.h:40
void enter(const T &)
Definition builder.h:35
static const atermpp::aterm SortFSet
static const atermpp::aterm DataVarId
static const atermpp::aterm BindingOperator
static const atermpp::aterm SortArrow
static const atermpp::aterm UntypedSetBagComp
static const atermpp::aterm Lambda
static const atermpp::aterm SortExpr
static const atermpp::aterm SortConsType
static const atermpp::aterm SortId
static const atermpp::aterm Binder
static const atermpp::aterm DataEqn
static const atermpp::aterm SortRef
static const atermpp::aterm DataExpr
static const atermpp::aterm UntypedSortUnknown
static const atermpp::aterm SortSet
static const atermpp::aterm Exists
static const atermpp::aterm SortCons
static const atermpp::aterm SortBag
static const atermpp::aterm OpId
static const atermpp::aterm SetComp
static const atermpp::aterm BagComp
static const atermpp::aterm SortFBag
static const atermpp::aterm SortList
static const atermpp::aterm Forall
void apply(T &result, const argument_type &x)
Definition builder.h:173
update_apply_builder(const Function &f)
Definition builder.h:179
void apply(T &result, const data::bag_comprehension &x)
Definition builder.h:511
void apply(T &result, const data::machine_number &x)
Definition builder.h:445
void apply(T &result, const data::untyped_identifier_assignment &x)
Definition builder.h:471
void apply(T &result, const data::assignment_expression &x)
Definition builder.h:578
void apply(T &result, const data::untyped_set_or_bag_comprehension &x)
Definition builder.h:519
void apply(T &result, const data::untyped_identifier &x)
Definition builder.h:454
void apply(T &result, const data::data_equation &x)
Definition builder.h:527
void apply(T &result, const data::function_symbol &x)
Definition builder.h:416
void apply(T &result, const data::assignment &x)
Definition builder.h:463
void apply(T &result, const data::abstraction &x)
Definition builder.h:593
void apply(T &result, const data::forall &x)
Definition builder.h:479
void apply(T &result, const data::untyped_data_parameter &x)
Definition builder.h:535
void apply(T &result, const data::exists &x)
Definition builder.h:487
void apply(T &result, const data::where_clause &x)
Definition builder.h:437
void apply(T &result, const data::application &x)
Definition builder.h:425
void apply(T &result, const data::variable &x)
Definition builder.h:407
void apply(T &result, const data::data_expression &x)
Definition builder.h:543
void apply(T &result, const data::set_comprehension &x)
Definition builder.h:503
void apply(T &result, const data::lambda &x)
Definition builder.h:495
void apply(T &result, const data::assignment &x)
Definition builder.h:108
void apply(T &result, const data::set_comprehension &x)
Definition builder.h:207
void apply(T &result, const data::structured_sort_constructor_argument &x)
Definition builder.h:231
void apply(T &result, const data::container_sort &x)
Definition builder.h:133
void apply(T &result, const data::alias &x)
Definition builder.h:247
void apply(T &result, const data::exists &x)
Definition builder.h:191
void apply(T &result, const data::machine_number &x)
Definition builder.h:90
void apply(T &result, const data::function_symbol &x)
Definition builder.h:62
void apply(T &result, const data::untyped_possible_sorts &x)
Definition builder.h:166
void apply(T &result, const data::forall &x)
Definition builder.h:183
void apply(T &result, const data::basic_sort &x)
Definition builder.h:124
void apply(T &result, const data::data_equation &x)
Definition builder.h:255
void apply(T &result, const data::untyped_sort &x)
Definition builder.h:157
void apply(T &result, const data::abstraction &x)
Definition builder.h:356
void apply(T &result, const data::application &x)
Definition builder.h:70
void apply(T &result, const data::variable &x)
Definition builder.h:54
void apply(T &result, const data::structured_sort &x)
Definition builder.h:141
void apply(T &result, const data::untyped_identifier_assignment &x)
Definition builder.h:116
void apply(T &result, const data::untyped_data_parameter &x)
Definition builder.h:263
void apply(T &result, const data::function_sort &x)
Definition builder.h:149
void apply(T &result, const data::untyped_identifier &x)
Definition builder.h:99
void apply(T &result, const data::structured_sort_constructor &x)
Definition builder.h:239
void apply(T &result, const data::lambda &x)
Definition builder.h:199
void apply(T &result, const data::untyped_set_or_bag_comprehension &x)
Definition builder.h:223
void apply(T &result, const data::where_clause &x)
Definition builder.h:82
void apply(T &result, const data::assignment_expression &x)
Definition builder.h:306
void apply(T &result, const data::data_expression &x)
Definition builder.h:271
void apply(T &result, const data::sort_expression &x)
Definition builder.h:321
void apply(T &result, const data::untyped_sort_variable &x)
Definition builder.h:174
void apply(T &result, const data::bag_comprehension &x)
Definition builder.h:215
void apply(T &result, const data::abstraction &x)
Definition builder.h:829
void apply(T &result, const data::application &x)
Definition builder.h:661
void apply(T &result, const data::untyped_data_parameter &x)
Definition builder.h:771
void apply(T &result, const data::untyped_identifier &x)
Definition builder.h:690
void apply(T &result, const data::data_expression &x)
Definition builder.h:779
void apply(T &result, const data::assignment_expression &x)
Definition builder.h:814
void apply(T &result, const data::where_clause &x)
Definition builder.h:673
void apply(T &result, const data::forall &x)
Definition builder.h:715
void apply(T &result, const data::function_symbol &x)
Definition builder.h:652
void apply(T &result, const data::exists &x)
Definition builder.h:723
void apply(T &result, const data::lambda &x)
Definition builder.h:731
void apply(T &result, const data::variable &x)
Definition builder.h:643
void apply(T &result, const data::assignment &x)
Definition builder.h:699
void apply(T &result, const data::untyped_identifier_assignment &x)
Definition builder.h:707
void apply(T &result, const data::untyped_set_or_bag_comprehension &x)
Definition builder.h:755
void apply(T &result, const data::set_comprehension &x)
Definition builder.h:739
void apply(T &result, const data::bag_comprehension &x)
Definition builder.h:747
void apply(T &result, const data::machine_number &x)
Definition builder.h:681
void apply(T &result, const data::data_equation &x)
Definition builder.h:763
data_expression_actions(const core::parser &parser_)
Definition parse_impl.h:138
data::data_expression parse_DataExpr(const core::parse_node &node) const
Definition parse_impl.h:208
data_specification_actions(const core::parser &parser_)
Definition parse_impl.h:297
untyped_data_specification parse_DataSpec(const core::parse_node &node) const
Definition parse_impl.h:458
normalize_sorts_function(const sort_specification &sort_spec)
sort_expression operator()(const sort_expression &e) const
Normalise sorts.
const std::map< sort_expression, sort_expression > & m_normalised_aliases
data::sort_expression parse_SortExpr(const core::parse_node &node, data::sort_expression_list *product=nullptr) const
Definition parse_impl.h:32
\brief Builder class
Definition builder.h:864
std::size_t operator()(const mcrl2::data::container_type &v) const
std::size_t operator()(const mcrl2::data::data_expression &v) const
std::size_t operator()(const mcrl2::data::function_sort &v) const
std::size_t operator()(const mcrl2::data::sort_expression &x) const
std::size_t operator()(const mcrl2::data::variable &v) const
Definition variable.h:128