mCRL2
Loading...
Searching...
No Matches
real1.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/real.h
10/// \brief The standard sort real_.
11///
12/// This file was generated from the data sort specification
13/// mcrl2/data/build/real.spec.
14
15#ifndef MCRL2_DATA_REAL1_H
16#define MCRL2_DATA_REAL1_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/bool.h"
27#include "mcrl2/data/pos1.h"
28#include "mcrl2/data/nat1.h"
29#include "mcrl2/data/int1.h"
30
31/// \brief Namespace for system defined sort real_.
32namespace mcrl2::data::sort_real
33{
34
35 inline
36 const core::identifier_string& real_name()
37 {
38 static core::identifier_string real_name = core::identifier_string("Real");
39 return real_name;
40 }
41
42 /// \brief Constructor for sort expression Real.
43 /// \return Sort expression Real.
44 inline
46 {
48 return real_;
49 }
50
51 /// \brief Recogniser for sort expression Real
52 /// \param e A sort expression
53 /// \return true iff e == real_()
54 inline
55 bool is_real(const sort_expression& e)
56 {
57 if (is_basic_sort(e))
58 {
59 return basic_sort(e) == real_();
60 }
61 return false;
62 }
63
64 /// \brief Give all system defined constructors for real_.
65 /// \return All system defined constructors for real_.
66 inline
68 {
69 function_symbol_vector result;
70 return result;
71 }
72 /// \brief Give all defined constructors which can be used in mCRL2 specs for real_.
73 /// \return All system defined constructors that can be used in an mCRL2 specification for real_.
74 inline
76 {
77 function_symbol_vector result;
78 return result;
79 }
80 // 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
82 /// \brief Give all system defined constructors which have an implementation in C++ and not in rewrite rules for real_.
83 /// \return All system defined constructors that are to be implemented in C++ for real_.
84 inline
86 {
87 implementation_map result;
88 return result;
89 }
90
91 /// \brief Generate identifier \@cReal.
92 /// \return Identifier \@cReal.
93 inline
94 const core::identifier_string& creal_name()
95 {
96 static core::identifier_string creal_name = core::identifier_string("@cReal");
97 return creal_name;
98 }
99
100 /// \brief Constructor for function symbol \@cReal.
101
102 /// \return Function symbol creal.
103 inline
105 {
107 return creal;
108 }
109
110 /// \brief Recogniser for function \@cReal.
111 /// \param e A data expression.
112 /// \return true iff e is the function symbol matching \@cReal.
113 inline
115 {
117 {
118 return atermpp::down_cast<function_symbol>(e) == creal();
119 }
120 return false;
121 }
122
123 /// \brief Application of function symbol \@cReal.
124
125 /// \param arg0 A data expression.
126 /// \param arg1 A data expression.
127 /// \return Application of \@cReal to a number of arguments.
128 inline
129 application creal(const data_expression& arg0, const data_expression& arg1)
130 {
131 return sort_real::creal()(arg0, arg1);
132 }
133
134 /// \brief Make an application of function symbol \@cReal.
135 /// \param result The data expression where the \@cReal expression is put.
136
137 /// \param arg0 A data expression.
138 /// \param arg1 A data expression.
139 inline
140 void make_creal(data_expression& result, const data_expression& arg0, const data_expression& arg1)
141 {
142 make_application(result, sort_real::creal(),arg0, arg1);
143 }
144
145 /// \brief Recogniser for application of \@cReal.
146 /// \param e A data expression.
147 /// \return true iff e is an application of function symbol creal to a
148 /// number of arguments.
149 inline
151 {
152 return is_application(e) && is_creal_function_symbol(atermpp::down_cast<application>(e).head());
153 }
154
155 /// \brief Generate identifier Pos2Real.
156 /// \return Identifier Pos2Real.
157 inline
158 const core::identifier_string& pos2real_name()
159 {
160 static core::identifier_string pos2real_name = core::identifier_string("Pos2Real");
161 return pos2real_name;
162 }
163
164 /// \brief Constructor for function symbol Pos2Real.
165
166 /// \return Function symbol pos2real.
167 inline
169 {
171 return pos2real;
172 }
173
174 /// \brief Recogniser for function Pos2Real.
175 /// \param e A data expression.
176 /// \return true iff e is the function symbol matching Pos2Real.
177 inline
179 {
181 {
182 return atermpp::down_cast<function_symbol>(e) == pos2real();
183 }
184 return false;
185 }
186
187 /// \brief Application of function symbol Pos2Real.
188
189 /// \param arg0 A data expression.
190 /// \return Application of Pos2Real to a number of arguments.
191 inline
192 application pos2real(const data_expression& arg0)
193 {
194 return sort_real::pos2real()(arg0);
195 }
196
197 /// \brief Make an application of function symbol Pos2Real.
198 /// \param result The data expression where the Pos2Real expression is put.
199
200 /// \param arg0 A data expression.
201 inline
203 {
204 make_application(result, sort_real::pos2real(),arg0);
205 }
206
207 /// \brief Recogniser for application of Pos2Real.
208 /// \param e A data expression.
209 /// \return true iff e is an application of function symbol pos2real to a
210 /// number of arguments.
211 inline
213 {
214 return is_application(e) && is_pos2real_function_symbol(atermpp::down_cast<application>(e).head());
215 }
216
217 /// \brief Generate identifier Nat2Real.
218 /// \return Identifier Nat2Real.
219 inline
220 const core::identifier_string& nat2real_name()
221 {
222 static core::identifier_string nat2real_name = core::identifier_string("Nat2Real");
223 return nat2real_name;
224 }
225
226 /// \brief Constructor for function symbol Nat2Real.
227
228 /// \return Function symbol nat2real.
229 inline
231 {
233 return nat2real;
234 }
235
236 /// \brief Recogniser for function Nat2Real.
237 /// \param e A data expression.
238 /// \return true iff e is the function symbol matching Nat2Real.
239 inline
241 {
243 {
244 return atermpp::down_cast<function_symbol>(e) == nat2real();
245 }
246 return false;
247 }
248
249 /// \brief Application of function symbol Nat2Real.
250
251 /// \param arg0 A data expression.
252 /// \return Application of Nat2Real to a number of arguments.
253 inline
254 application nat2real(const data_expression& arg0)
255 {
256 return sort_real::nat2real()(arg0);
257 }
258
259 /// \brief Make an application of function symbol Nat2Real.
260 /// \param result The data expression where the Nat2Real expression is put.
261
262 /// \param arg0 A data expression.
263 inline
265 {
266 make_application(result, sort_real::nat2real(),arg0);
267 }
268
269 /// \brief Recogniser for application of Nat2Real.
270 /// \param e A data expression.
271 /// \return true iff e is an application of function symbol nat2real to a
272 /// number of arguments.
273 inline
275 {
276 return is_application(e) && is_nat2real_function_symbol(atermpp::down_cast<application>(e).head());
277 }
278
279 /// \brief Generate identifier Int2Real.
280 /// \return Identifier Int2Real.
281 inline
282 const core::identifier_string& int2real_name()
283 {
284 static core::identifier_string int2real_name = core::identifier_string("Int2Real");
285 return int2real_name;
286 }
287
288 /// \brief Constructor for function symbol Int2Real.
289
290 /// \return Function symbol int2real.
291 inline
293 {
295 return int2real;
296 }
297
298 /// \brief Recogniser for function Int2Real.
299 /// \param e A data expression.
300 /// \return true iff e is the function symbol matching Int2Real.
301 inline
303 {
305 {
306 return atermpp::down_cast<function_symbol>(e) == int2real();
307 }
308 return false;
309 }
310
311 /// \brief Application of function symbol Int2Real.
312
313 /// \param arg0 A data expression.
314 /// \return Application of Int2Real to a number of arguments.
315 inline
316 application int2real(const data_expression& arg0)
317 {
318 return sort_real::int2real()(arg0);
319 }
320
321 /// \brief Make an application of function symbol Int2Real.
322 /// \param result The data expression where the Int2Real expression is put.
323
324 /// \param arg0 A data expression.
325 inline
327 {
328 make_application(result, sort_real::int2real(),arg0);
329 }
330
331 /// \brief Recogniser for application of Int2Real.
332 /// \param e A data expression.
333 /// \return true iff e is an application of function symbol int2real to a
334 /// number of arguments.
335 inline
337 {
338 return is_application(e) && is_int2real_function_symbol(atermpp::down_cast<application>(e).head());
339 }
340
341 /// \brief Generate identifier Real2Pos.
342 /// \return Identifier Real2Pos.
343 inline
344 const core::identifier_string& real2pos_name()
345 {
346 static core::identifier_string real2pos_name = core::identifier_string("Real2Pos");
347 return real2pos_name;
348 }
349
350 /// \brief Constructor for function symbol Real2Pos.
351
352 /// \return Function symbol real2pos.
353 inline
355 {
357 return real2pos;
358 }
359
360 /// \brief Recogniser for function Real2Pos.
361 /// \param e A data expression.
362 /// \return true iff e is the function symbol matching Real2Pos.
363 inline
365 {
367 {
368 return atermpp::down_cast<function_symbol>(e) == real2pos();
369 }
370 return false;
371 }
372
373 /// \brief Application of function symbol Real2Pos.
374
375 /// \param arg0 A data expression.
376 /// \return Application of Real2Pos to a number of arguments.
377 inline
378 application real2pos(const data_expression& arg0)
379 {
380 return sort_real::real2pos()(arg0);
381 }
382
383 /// \brief Make an application of function symbol Real2Pos.
384 /// \param result The data expression where the Real2Pos expression is put.
385
386 /// \param arg0 A data expression.
387 inline
389 {
390 make_application(result, sort_real::real2pos(),arg0);
391 }
392
393 /// \brief Recogniser for application of Real2Pos.
394 /// \param e A data expression.
395 /// \return true iff e is an application of function symbol real2pos to a
396 /// number of arguments.
397 inline
399 {
400 return is_application(e) && is_real2pos_function_symbol(atermpp::down_cast<application>(e).head());
401 }
402
403 /// \brief Generate identifier Real2Nat.
404 /// \return Identifier Real2Nat.
405 inline
406 const core::identifier_string& real2nat_name()
407 {
408 static core::identifier_string real2nat_name = core::identifier_string("Real2Nat");
409 return real2nat_name;
410 }
411
412 /// \brief Constructor for function symbol Real2Nat.
413
414 /// \return Function symbol real2nat.
415 inline
417 {
419 return real2nat;
420 }
421
422 /// \brief Recogniser for function Real2Nat.
423 /// \param e A data expression.
424 /// \return true iff e is the function symbol matching Real2Nat.
425 inline
427 {
429 {
430 return atermpp::down_cast<function_symbol>(e) == real2nat();
431 }
432 return false;
433 }
434
435 /// \brief Application of function symbol Real2Nat.
436
437 /// \param arg0 A data expression.
438 /// \return Application of Real2Nat to a number of arguments.
439 inline
440 application real2nat(const data_expression& arg0)
441 {
442 return sort_real::real2nat()(arg0);
443 }
444
445 /// \brief Make an application of function symbol Real2Nat.
446 /// \param result The data expression where the Real2Nat expression is put.
447
448 /// \param arg0 A data expression.
449 inline
451 {
452 make_application(result, sort_real::real2nat(),arg0);
453 }
454
455 /// \brief Recogniser for application of Real2Nat.
456 /// \param e A data expression.
457 /// \return true iff e is an application of function symbol real2nat to a
458 /// number of arguments.
459 inline
461 {
462 return is_application(e) && is_real2nat_function_symbol(atermpp::down_cast<application>(e).head());
463 }
464
465 /// \brief Generate identifier Real2Int.
466 /// \return Identifier Real2Int.
467 inline
468 const core::identifier_string& real2int_name()
469 {
470 static core::identifier_string real2int_name = core::identifier_string("Real2Int");
471 return real2int_name;
472 }
473
474 /// \brief Constructor for function symbol Real2Int.
475
476 /// \return Function symbol real2int.
477 inline
479 {
481 return real2int;
482 }
483
484 /// \brief Recogniser for function Real2Int.
485 /// \param e A data expression.
486 /// \return true iff e is the function symbol matching Real2Int.
487 inline
489 {
491 {
492 return atermpp::down_cast<function_symbol>(e) == real2int();
493 }
494 return false;
495 }
496
497 /// \brief Application of function symbol Real2Int.
498
499 /// \param arg0 A data expression.
500 /// \return Application of Real2Int to a number of arguments.
501 inline
502 application real2int(const data_expression& arg0)
503 {
504 return sort_real::real2int()(arg0);
505 }
506
507 /// \brief Make an application of function symbol Real2Int.
508 /// \param result The data expression where the Real2Int expression is put.
509
510 /// \param arg0 A data expression.
511 inline
513 {
514 make_application(result, sort_real::real2int(),arg0);
515 }
516
517 /// \brief Recogniser for application of Real2Int.
518 /// \param e A data expression.
519 /// \return true iff e is an application of function symbol real2int to a
520 /// number of arguments.
521 inline
523 {
524 return is_application(e) && is_real2int_function_symbol(atermpp::down_cast<application>(e).head());
525 }
526
527 /// \brief Generate identifier max.
528 /// \return Identifier max.
529 inline
530 const core::identifier_string& maximum_name()
531 {
532 static core::identifier_string maximum_name = core::identifier_string("max");
533 return maximum_name;
534 }
535
536 // This function is not intended for public use and therefore not documented in Doxygen.
537 inline
539 {
540 sort_expression target_sort;
541 if (s0 == real_() && s1 == real_())
542 {
543 target_sort = real_();
544 }
545 else if (s0 == sort_pos::pos() && s1 == sort_int::int_())
546 {
547 target_sort = sort_pos::pos();
548 }
549 else if (s0 == sort_int::int_() && s1 == sort_pos::pos())
550 {
551 target_sort = sort_pos::pos();
552 }
553 else if (s0 == sort_nat::nat() && s1 == sort_int::int_())
554 {
555 target_sort = sort_nat::nat();
556 }
557 else if (s0 == sort_int::int_() && s1 == sort_nat::nat())
558 {
559 target_sort = sort_nat::nat();
560 }
561 else if (s0 == sort_int::int_() && s1 == sort_int::int_())
562 {
563 target_sort = sort_int::int_();
564 }
565 else if (s0 == sort_pos::pos() && s1 == sort_nat::nat())
566 {
567 target_sort = sort_pos::pos();
568 }
569 else if (s0 == sort_nat::nat() && s1 == sort_pos::pos())
570 {
571 target_sort = sort_pos::pos();
572 }
573 else if (s0 == sort_nat::nat() && s1 == sort_nat::nat())
574 {
575 target_sort = sort_nat::nat();
576 }
577 else if (s0 == sort_pos::pos() && s1 == sort_pos::pos())
578 {
579 target_sort = sort_pos::pos();
580 }
581 else
582 {
583 throw mcrl2::runtime_error("Cannot compute target sort for maximum with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
584 }
585
587 return maximum;
588 }
589
590 /// \brief Recogniser for function max.
591 /// \param e A data expression.
592 /// \return true iff e is the function symbol matching max.
593 inline
595 {
597 {
598 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
599 return f.name() == maximum_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == maximum(real_(), real_()) || f == maximum(sort_pos::pos(), sort_int::int_()) || f == maximum(sort_int::int_(), sort_pos::pos()) || f == maximum(sort_nat::nat(), sort_int::int_()) || f == maximum(sort_int::int_(), sort_nat::nat()) || f == maximum(sort_int::int_(), sort_int::int_()) || f == maximum(sort_pos::pos(), sort_nat::nat()) || f == maximum(sort_nat::nat(), sort_pos::pos()) || f == maximum(sort_nat::nat(), sort_nat::nat()) || f == maximum(sort_pos::pos(), sort_pos::pos()));
600 }
601 return false;
602 }
603
604 /// \brief Application of function symbol max.
605
606 /// \param arg0 A data expression.
607 /// \param arg1 A data expression.
608 /// \return Application of max to a number of arguments.
609 inline
610 application maximum(const data_expression& arg0, const data_expression& arg1)
611 {
612 return sort_real::maximum(arg0.sort(), arg1.sort())(arg0, arg1);
613 }
614
615 /// \brief Make an application of function symbol max.
616 /// \param result The data expression where the max expression is put.
617
618 /// \param arg0 A data expression.
619 /// \param arg1 A data expression.
620 inline
621 void make_maximum(data_expression& result, const data_expression& arg0, const data_expression& arg1)
622 {
623 make_application(result, sort_real::maximum(arg0.sort(), arg1.sort()),arg0, arg1);
624 }
625
626 /// \brief Recogniser for application of max.
627 /// \param e A data expression.
628 /// \return true iff e is an application of function symbol maximum to a
629 /// number of arguments.
630 inline
632 {
633 return is_application(e) && is_maximum_function_symbol(atermpp::down_cast<application>(e).head());
634 }
635
636 /// \brief Generate identifier min.
637 /// \return Identifier min.
638 inline
639 const core::identifier_string& minimum_name()
640 {
641 static core::identifier_string minimum_name = core::identifier_string("min");
642 return minimum_name;
643 }
644
645 // This function is not intended for public use and therefore not documented in Doxygen.
646 inline
648 {
649 sort_expression target_sort;
650 if (s0 == real_() && s1 == real_())
651 {
652 target_sort = real_();
653 }
654 else if (s0 == sort_int::int_() && s1 == sort_int::int_())
655 {
656 target_sort = sort_int::int_();
657 }
658 else if (s0 == sort_nat::nat() && s1 == sort_nat::nat())
659 {
660 target_sort = sort_nat::nat();
661 }
662 else if (s0 == sort_pos::pos() && s1 == sort_pos::pos())
663 {
664 target_sort = sort_pos::pos();
665 }
666 else
667 {
668 throw mcrl2::runtime_error("Cannot compute target sort for minimum with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
669 }
670
672 return minimum;
673 }
674
675 /// \brief Recogniser for function min.
676 /// \param e A data expression.
677 /// \return true iff e is the function symbol matching min.
678 inline
680 {
682 {
683 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
684 return f.name() == minimum_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == minimum(real_(), real_()) || f == minimum(sort_int::int_(), sort_int::int_()) || f == minimum(sort_nat::nat(), sort_nat::nat()) || f == minimum(sort_pos::pos(), sort_pos::pos()));
685 }
686 return false;
687 }
688
689 /// \brief Application of function symbol min.
690
691 /// \param arg0 A data expression.
692 /// \param arg1 A data expression.
693 /// \return Application of min to a number of arguments.
694 inline
695 application minimum(const data_expression& arg0, const data_expression& arg1)
696 {
697 return sort_real::minimum(arg0.sort(), arg1.sort())(arg0, arg1);
698 }
699
700 /// \brief Make an application of function symbol min.
701 /// \param result The data expression where the min expression is put.
702
703 /// \param arg0 A data expression.
704 /// \param arg1 A data expression.
705 inline
706 void make_minimum(data_expression& result, const data_expression& arg0, const data_expression& arg1)
707 {
708 make_application(result, sort_real::minimum(arg0.sort(), arg1.sort()),arg0, arg1);
709 }
710
711 /// \brief Recogniser for application of min.
712 /// \param e A data expression.
713 /// \return true iff e is an application of function symbol minimum to a
714 /// number of arguments.
715 inline
717 {
718 return is_application(e) && is_minimum_function_symbol(atermpp::down_cast<application>(e).head());
719 }
720
721 /// \brief Generate identifier abs.
722 /// \return Identifier abs.
723 inline
724 const core::identifier_string& abs_name()
725 {
726 static core::identifier_string abs_name = core::identifier_string("abs");
727 return abs_name;
728 }
729
730 // This function is not intended for public use and therefore not documented in Doxygen.
731 inline
733 {
734 sort_expression target_sort;
735 if (s0 == real_())
736 {
737 target_sort = real_();
738 }
739 else if (s0 == sort_int::int_())
740 {
741 target_sort = sort_nat::nat();
742 }
743 else
744 {
745 throw mcrl2::runtime_error("Cannot compute target sort for abs with domain sorts " + pp(s0) + ". ");
746 }
747
749 return abs;
750 }
751
752 /// \brief Recogniser for function abs.
753 /// \param e A data expression.
754 /// \return true iff e is the function symbol matching abs.
755 inline
757 {
759 {
760 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
761 return f.name() == abs_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 1 && (f == abs(real_()) || f == abs(sort_int::int_()));
762 }
763 return false;
764 }
765
766 /// \brief Application of function symbol abs.
767
768 /// \param arg0 A data expression.
769 /// \return Application of abs to a number of arguments.
770 inline
771 application abs(const data_expression& arg0)
772 {
773 return sort_real::abs(arg0.sort())(arg0);
774 }
775
776 /// \brief Make an application of function symbol abs.
777 /// \param result The data expression where the abs expression is put.
778
779 /// \param arg0 A data expression.
780 inline
781 void make_abs(data_expression& result, const data_expression& arg0)
782 {
783 make_application(result, sort_real::abs(arg0.sort()),arg0);
784 }
785
786 /// \brief Recogniser for application of abs.
787 /// \param e A data expression.
788 /// \return true iff e is an application of function symbol abs to a
789 /// number of arguments.
790 inline
792 {
793 return is_application(e) && is_abs_function_symbol(atermpp::down_cast<application>(e).head());
794 }
795
796 /// \brief Generate identifier -.
797 /// \return Identifier -.
798 inline
799 const core::identifier_string& negate_name()
800 {
801 static core::identifier_string negate_name = core::identifier_string("-");
802 return negate_name;
803 }
804
805 // This function is not intended for public use and therefore not documented in Doxygen.
806 inline
808 {
809 sort_expression target_sort;
810 if (s0 == real_())
811 {
812 target_sort = real_();
813 }
814 else if (s0 == sort_pos::pos())
815 {
816 target_sort = sort_int::int_();
817 }
818 else if (s0 == sort_nat::nat())
819 {
820 target_sort = sort_int::int_();
821 }
822 else if (s0 == sort_int::int_())
823 {
824 target_sort = sort_int::int_();
825 }
826 else
827 {
828 throw mcrl2::runtime_error("Cannot compute target sort for negate with domain sorts " + pp(s0) + ". ");
829 }
830
832 return negate;
833 }
834
835 /// \brief Recogniser for function -.
836 /// \param e A data expression.
837 /// \return true iff e is the function symbol matching -.
838 inline
840 {
842 {
843 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
844 return f.name() == negate_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 1 && (f == negate(real_()) || f == negate(sort_pos::pos()) || f == negate(sort_nat::nat()) || f == negate(sort_int::int_()));
845 }
846 return false;
847 }
848
849 /// \brief Application of function symbol -.
850
851 /// \param arg0 A data expression.
852 /// \return Application of - to a number of arguments.
853 inline
854 application negate(const data_expression& arg0)
855 {
856 return sort_real::negate(arg0.sort())(arg0);
857 }
858
859 /// \brief Make an application of function symbol -.
860 /// \param result The data expression where the - expression is put.
861
862 /// \param arg0 A data expression.
863 inline
864 void make_negate(data_expression& result, const data_expression& arg0)
865 {
866 make_application(result, sort_real::negate(arg0.sort()),arg0);
867 }
868
869 /// \brief Recogniser for application of -.
870 /// \param e A data expression.
871 /// \return true iff e is an application of function symbol negate to a
872 /// number of arguments.
873 inline
875 {
876 return is_application(e) && is_negate_function_symbol(atermpp::down_cast<application>(e).head());
877 }
878
879 /// \brief Generate identifier succ.
880 /// \return Identifier succ.
881 inline
882 const core::identifier_string& succ_name()
883 {
884 static core::identifier_string succ_name = core::identifier_string("succ");
885 return succ_name;
886 }
887
888 // This function is not intended for public use and therefore not documented in Doxygen.
889 inline
891 {
892 sort_expression target_sort;
893 if (s0 == real_())
894 {
895 target_sort = real_();
896 }
897 else if (s0 == sort_int::int_())
898 {
899 target_sort = sort_int::int_();
900 }
901 else if (s0 == sort_nat::nat())
902 {
903 target_sort = sort_pos::pos();
904 }
905 else if (s0 == sort_pos::pos())
906 {
907 target_sort = sort_pos::pos();
908 }
909 else
910 {
911 throw mcrl2::runtime_error("Cannot compute target sort for succ with domain sorts " + pp(s0) + ". ");
912 }
913
915 return succ;
916 }
917
918 /// \brief Recogniser for function succ.
919 /// \param e A data expression.
920 /// \return true iff e is the function symbol matching succ.
921 inline
923 {
925 {
926 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
927 return f.name() == succ_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 1 && (f == succ(real_()) || f == succ(sort_int::int_()) || f == succ(sort_nat::nat()) || f == succ(sort_pos::pos()));
928 }
929 return false;
930 }
931
932 /// \brief Application of function symbol succ.
933
934 /// \param arg0 A data expression.
935 /// \return Application of succ to a number of arguments.
936 inline
937 application succ(const data_expression& arg0)
938 {
939 return sort_real::succ(arg0.sort())(arg0);
940 }
941
942 /// \brief Make an application of function symbol succ.
943 /// \param result The data expression where the succ expression is put.
944
945 /// \param arg0 A data expression.
946 inline
947 void make_succ(data_expression& result, const data_expression& arg0)
948 {
949 make_application(result, sort_real::succ(arg0.sort()),arg0);
950 }
951
952 /// \brief Recogniser for application of succ.
953 /// \param e A data expression.
954 /// \return true iff e is an application of function symbol succ to a
955 /// number of arguments.
956 inline
958 {
959 return is_application(e) && is_succ_function_symbol(atermpp::down_cast<application>(e).head());
960 }
961
962 /// \brief Generate identifier pred.
963 /// \return Identifier pred.
964 inline
965 const core::identifier_string& pred_name()
966 {
967 static core::identifier_string pred_name = core::identifier_string("pred");
968 return pred_name;
969 }
970
971 // This function is not intended for public use and therefore not documented in Doxygen.
972 inline
974 {
975 sort_expression target_sort;
976 if (s0 == real_())
977 {
978 target_sort = real_();
979 }
980 else if (s0 == sort_nat::nat())
981 {
982 target_sort = sort_int::int_();
983 }
984 else if (s0 == sort_int::int_())
985 {
986 target_sort = sort_int::int_();
987 }
988 else if (s0 == sort_pos::pos())
989 {
990 target_sort = sort_nat::nat();
991 }
992 else
993 {
994 throw mcrl2::runtime_error("Cannot compute target sort for pred with domain sorts " + pp(s0) + ". ");
995 }
996
998 return pred;
999 }
1000
1001 /// \brief Recogniser for function pred.
1002 /// \param e A data expression.
1003 /// \return true iff e is the function symbol matching pred.
1004 inline
1006 {
1008 {
1009 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
1010 return f.name() == pred_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 1 && (f == pred(real_()) || f == pred(sort_nat::nat()) || f == pred(sort_int::int_()) || f == pred(sort_pos::pos()));
1011 }
1012 return false;
1013 }
1014
1015 /// \brief Application of function symbol pred.
1016
1017 /// \param arg0 A data expression.
1018 /// \return Application of pred to a number of arguments.
1019 inline
1020 application pred(const data_expression& arg0)
1021 {
1022 return sort_real::pred(arg0.sort())(arg0);
1023 }
1024
1025 /// \brief Make an application of function symbol pred.
1026 /// \param result The data expression where the pred expression is put.
1027
1028 /// \param arg0 A data expression.
1029 inline
1030 void make_pred(data_expression& result, const data_expression& arg0)
1031 {
1032 make_application(result, sort_real::pred(arg0.sort()),arg0);
1033 }
1034
1035 /// \brief Recogniser for application of pred.
1036 /// \param e A data expression.
1037 /// \return true iff e is an application of function symbol pred to a
1038 /// number of arguments.
1039 inline
1041 {
1042 return is_application(e) && is_pred_function_symbol(atermpp::down_cast<application>(e).head());
1043 }
1044
1045 /// \brief Generate identifier +.
1046 /// \return Identifier +.
1047 inline
1048 const core::identifier_string& plus_name()
1049 {
1050 static core::identifier_string plus_name = core::identifier_string("+");
1051 return plus_name;
1052 }
1053
1054 // This function is not intended for public use and therefore not documented in Doxygen.
1055 inline
1057 {
1058 sort_expression target_sort;
1059 if (s0 == real_() && s1 == real_())
1060 {
1061 target_sort = real_();
1062 }
1063 else if (s0 == sort_int::int_() && s1 == sort_int::int_())
1064 {
1065 target_sort = sort_int::int_();
1066 }
1067 else if (s0 == sort_pos::pos() && s1 == sort_nat::nat())
1068 {
1069 target_sort = sort_pos::pos();
1070 }
1071 else if (s0 == sort_nat::nat() && s1 == sort_pos::pos())
1072 {
1073 target_sort = sort_pos::pos();
1074 }
1075 else if (s0 == sort_nat::nat() && s1 == sort_nat::nat())
1076 {
1077 target_sort = sort_nat::nat();
1078 }
1079 else if (s0 == sort_pos::pos() && s1 == sort_pos::pos())
1080 {
1081 target_sort = sort_pos::pos();
1082 }
1083 else
1084 {
1085 throw mcrl2::runtime_error("Cannot compute target sort for plus with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
1086 }
1087
1089 return plus;
1090 }
1091
1092 /// \brief Recogniser for function +.
1093 /// \param e A data expression.
1094 /// \return true iff e is the function symbol matching +.
1095 inline
1097 {
1099 {
1100 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
1101 return f.name() == plus_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == plus(real_(), real_()) || f == plus(sort_int::int_(), sort_int::int_()) || f == plus(sort_pos::pos(), sort_nat::nat()) || f == plus(sort_nat::nat(), sort_pos::pos()) || f == plus(sort_nat::nat(), sort_nat::nat()) || f == plus(sort_pos::pos(), sort_pos::pos()));
1102 }
1103 return false;
1104 }
1105
1106 /// \brief Application of function symbol +.
1107
1108 /// \param arg0 A data expression.
1109 /// \param arg1 A data expression.
1110 /// \return Application of + to a number of arguments.
1111 inline
1112 application plus(const data_expression& arg0, const data_expression& arg1)
1113 {
1114 return sort_real::plus(arg0.sort(), arg1.sort())(arg0, arg1);
1115 }
1116
1117 /// \brief Make an application of function symbol +.
1118 /// \param result The data expression where the + expression is put.
1119
1120 /// \param arg0 A data expression.
1121 /// \param arg1 A data expression.
1122 inline
1123 void make_plus(data_expression& result, const data_expression& arg0, const data_expression& arg1)
1124 {
1125 make_application(result, sort_real::plus(arg0.sort(), arg1.sort()),arg0, arg1);
1126 }
1127
1128 /// \brief Recogniser for application of +.
1129 /// \param e A data expression.
1130 /// \return true iff e is an application of function symbol plus to a
1131 /// number of arguments.
1132 inline
1134 {
1135 return is_application(e) && is_plus_function_symbol(atermpp::down_cast<application>(e).head());
1136 }
1137
1138 /// \brief Generate identifier -.
1139 /// \return Identifier -.
1140 inline
1141 const core::identifier_string& minus_name()
1142 {
1143 static core::identifier_string minus_name = core::identifier_string("-");
1144 return minus_name;
1145 }
1146
1147 // This function is not intended for public use and therefore not documented in Doxygen.
1148 inline
1150 {
1151 sort_expression target_sort;
1152 if (s0 == real_() && s1 == real_())
1153 {
1154 target_sort = real_();
1155 }
1156 else if (s0 == sort_pos::pos() && s1 == sort_pos::pos())
1157 {
1158 target_sort = sort_int::int_();
1159 }
1160 else if (s0 == sort_nat::nat() && s1 == sort_nat::nat())
1161 {
1162 target_sort = sort_int::int_();
1163 }
1164 else if (s0 == sort_int::int_() && s1 == sort_int::int_())
1165 {
1166 target_sort = sort_int::int_();
1167 }
1168 else
1169 {
1170 throw mcrl2::runtime_error("Cannot compute target sort for minus with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
1171 }
1172
1174 return minus;
1175 }
1176
1177 /// \brief Recogniser for function -.
1178 /// \param e A data expression.
1179 /// \return true iff e is the function symbol matching -.
1180 inline
1182 {
1184 {
1185 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
1186 return f.name() == minus_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == minus(real_(), real_()) || f == minus(sort_pos::pos(), sort_pos::pos()) || f == minus(sort_nat::nat(), sort_nat::nat()) || f == minus(sort_int::int_(), sort_int::int_()));
1187 }
1188 return false;
1189 }
1190
1191 /// \brief Application of function symbol -.
1192
1193 /// \param arg0 A data expression.
1194 /// \param arg1 A data expression.
1195 /// \return Application of - to a number of arguments.
1196 inline
1197 application minus(const data_expression& arg0, const data_expression& arg1)
1198 {
1199 return sort_real::minus(arg0.sort(), arg1.sort())(arg0, arg1);
1200 }
1201
1202 /// \brief Make an application of function symbol -.
1203 /// \param result The data expression where the - expression is put.
1204
1205 /// \param arg0 A data expression.
1206 /// \param arg1 A data expression.
1207 inline
1208 void make_minus(data_expression& result, const data_expression& arg0, const data_expression& arg1)
1209 {
1210 make_application(result, sort_real::minus(arg0.sort(), arg1.sort()),arg0, arg1);
1211 }
1212
1213 /// \brief Recogniser for application of -.
1214 /// \param e A data expression.
1215 /// \return true iff e is an application of function symbol minus to a
1216 /// number of arguments.
1217 inline
1219 {
1220 return is_application(e) && is_minus_function_symbol(atermpp::down_cast<application>(e).head());
1221 }
1222
1223 /// \brief Generate identifier *.
1224 /// \return Identifier *.
1225 inline
1226 const core::identifier_string& times_name()
1227 {
1228 static core::identifier_string times_name = core::identifier_string("*");
1229 return times_name;
1230 }
1231
1232 // This function is not intended for public use and therefore not documented in Doxygen.
1233 inline
1235 {
1236 sort_expression target_sort;
1237 if (s0 == real_() && s1 == real_())
1238 {
1239 target_sort = real_();
1240 }
1241 else if (s0 == sort_int::int_() && s1 == sort_int::int_())
1242 {
1243 target_sort = sort_int::int_();
1244 }
1245 else if (s0 == sort_nat::nat() && s1 == sort_nat::nat())
1246 {
1247 target_sort = sort_nat::nat();
1248 }
1249 else if (s0 == sort_pos::pos() && s1 == sort_pos::pos())
1250 {
1251 target_sort = sort_pos::pos();
1252 }
1253 else
1254 {
1255 throw mcrl2::runtime_error("Cannot compute target sort for times with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
1256 }
1257
1259 return times;
1260 }
1261
1262 /// \brief Recogniser for function *.
1263 /// \param e A data expression.
1264 /// \return true iff e is the function symbol matching *.
1265 inline
1267 {
1269 {
1270 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
1271 return f.name() == times_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == times(real_(), real_()) || f == times(sort_int::int_(), sort_int::int_()) || f == times(sort_nat::nat(), sort_nat::nat()) || f == times(sort_pos::pos(), sort_pos::pos()));
1272 }
1273 return false;
1274 }
1275
1276 /// \brief Application of function symbol *.
1277
1278 /// \param arg0 A data expression.
1279 /// \param arg1 A data expression.
1280 /// \return Application of * to a number of arguments.
1281 inline
1282 application times(const data_expression& arg0, const data_expression& arg1)
1283 {
1284 return sort_real::times(arg0.sort(), arg1.sort())(arg0, arg1);
1285 }
1286
1287 /// \brief Make an application of function symbol *.
1288 /// \param result The data expression where the * expression is put.
1289
1290 /// \param arg0 A data expression.
1291 /// \param arg1 A data expression.
1292 inline
1293 void make_times(data_expression& result, const data_expression& arg0, const data_expression& arg1)
1294 {
1295 make_application(result, sort_real::times(arg0.sort(), arg1.sort()),arg0, arg1);
1296 }
1297
1298 /// \brief Recogniser for application of *.
1299 /// \param e A data expression.
1300 /// \return true iff e is an application of function symbol times to a
1301 /// number of arguments.
1302 inline
1304 {
1305 return is_application(e) && is_times_function_symbol(atermpp::down_cast<application>(e).head());
1306 }
1307
1308 /// \brief Generate identifier exp.
1309 /// \return Identifier exp.
1310 inline
1311 const core::identifier_string& exp_name()
1312 {
1313 static core::identifier_string exp_name = core::identifier_string("exp");
1314 return exp_name;
1315 }
1316
1317 // This function is not intended for public use and therefore not documented in Doxygen.
1318 inline
1320 {
1321 sort_expression target_sort;
1322 if (s0 == real_() && s1 == sort_int::int_())
1323 {
1324 target_sort = real_();
1325 }
1326 else if (s0 == sort_int::int_() && s1 == sort_nat::nat())
1327 {
1328 target_sort = sort_int::int_();
1329 }
1330 else if (s0 == sort_pos::pos() && s1 == sort_nat::nat())
1331 {
1332 target_sort = sort_pos::pos();
1333 }
1334 else if (s0 == sort_nat::nat() && s1 == sort_nat::nat())
1335 {
1336 target_sort = sort_nat::nat();
1337 }
1338 else
1339 {
1340 throw mcrl2::runtime_error("Cannot compute target sort for exp with domain sorts " + pp(s0) + ", " + pp(s1) + ". ");
1341 }
1342
1344 return exp;
1345 }
1346
1347 /// \brief Recogniser for function exp.
1348 /// \param e A data expression.
1349 /// \return true iff e is the function symbol matching exp.
1350 inline
1352 {
1354 {
1355 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
1356 return f.name() == exp_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == exp(real_(), sort_int::int_()) || f == exp(sort_int::int_(), sort_nat::nat()) || f == exp(sort_pos::pos(), sort_nat::nat()) || f == exp(sort_nat::nat(), sort_nat::nat()));
1357 }
1358 return false;
1359 }
1360
1361 /// \brief Application of function symbol exp.
1362
1363 /// \param arg0 A data expression.
1364 /// \param arg1 A data expression.
1365 /// \return Application of exp to a number of arguments.
1366 inline
1367 application exp(const data_expression& arg0, const data_expression& arg1)
1368 {
1369 return sort_real::exp(arg0.sort(), arg1.sort())(arg0, arg1);
1370 }
1371
1372 /// \brief Make an application of function symbol exp.
1373 /// \param result The data expression where the exp expression is put.
1374
1375 /// \param arg0 A data expression.
1376 /// \param arg1 A data expression.
1377 inline
1378 void make_exp(data_expression& result, const data_expression& arg0, const data_expression& arg1)
1379 {
1380 make_application(result, sort_real::exp(arg0.sort(), arg1.sort()),arg0, arg1);
1381 }
1382
1383 /// \brief Recogniser for application of exp.
1384 /// \param e A data expression.
1385 /// \return true iff e is an application of function symbol exp to a
1386 /// number of arguments.
1387 inline
1389 {
1390 return is_application(e) && is_exp_function_symbol(atermpp::down_cast<application>(e).head());
1391 }
1392
1393 /// \brief Generate identifier /.
1394 /// \return Identifier /.
1395 inline
1396 const core::identifier_string& divides_name()
1397 {
1398 static core::identifier_string divides_name = core::identifier_string("/");
1399 return divides_name;
1400 }
1401
1402 // This function is not intended for public use and therefore not documented in Doxygen.
1403 inline
1405 {
1406 sort_expression target_sort(real_());
1408 return divides;
1409 }
1410
1411 /// \brief Recogniser for function /.
1412 /// \param e A data expression.
1413 /// \return true iff e is the function symbol matching /.
1414 inline
1416 {
1418 {
1419 const function_symbol& f = atermpp::down_cast<function_symbol>(e);
1420 return f.name() == divides_name() && atermpp::down_cast<function_sort>(f.sort()).domain().size() == 2 && (f == divides(sort_pos::pos(), sort_pos::pos()) || f == divides(sort_nat::nat(), sort_nat::nat()) || f == divides(sort_int::int_(), sort_int::int_()) || f == divides(real_(), real_()));
1421 }
1422 return false;
1423 }
1424
1425 /// \brief Application of function symbol /.
1426
1427 /// \param arg0 A data expression.
1428 /// \param arg1 A data expression.
1429 /// \return Application of / to a number of arguments.
1430 inline
1431 application divides(const data_expression& arg0, const data_expression& arg1)
1432 {
1433 return sort_real::divides(arg0.sort(), arg1.sort())(arg0, arg1);
1434 }
1435
1436 /// \brief Make an application of function symbol /.
1437 /// \param result The data expression where the / expression is put.
1438
1439 /// \param arg0 A data expression.
1440 /// \param arg1 A data expression.
1441 inline
1442 void make_divides(data_expression& result, const data_expression& arg0, const data_expression& arg1)
1443 {
1444 make_application(result, sort_real::divides(arg0.sort(), arg1.sort()),arg0, arg1);
1445 }
1446
1447 /// \brief Recogniser for application of /.
1448 /// \param e A data expression.
1449 /// \return true iff e is an application of function symbol divides to a
1450 /// number of arguments.
1451 inline
1453 {
1454 return is_application(e) && is_divides_function_symbol(atermpp::down_cast<application>(e).head());
1455 }
1456
1457 /// \brief Generate identifier floor.
1458 /// \return Identifier floor.
1459 inline
1460 const core::identifier_string& floor_name()
1461 {
1462 static core::identifier_string floor_name = core::identifier_string("floor");
1463 return floor_name;
1464 }
1465
1466 /// \brief Constructor for function symbol floor.
1467
1468 /// \return Function symbol floor.
1469 inline
1471 {
1473 return floor;
1474 }
1475
1476 /// \brief Recogniser for function floor.
1477 /// \param e A data expression.
1478 /// \return true iff e is the function symbol matching floor.
1479 inline
1481 {
1483 {
1484 return atermpp::down_cast<function_symbol>(e) == floor();
1485 }
1486 return false;
1487 }
1488
1489 /// \brief Application of function symbol floor.
1490
1491 /// \param arg0 A data expression.
1492 /// \return Application of floor to a number of arguments.
1493 inline
1494 application floor(const data_expression& arg0)
1495 {
1496 return sort_real::floor()(arg0);
1497 }
1498
1499 /// \brief Make an application of function symbol floor.
1500 /// \param result The data expression where the floor expression is put.
1501
1502 /// \param arg0 A data expression.
1503 inline
1504 void make_floor(data_expression& result, const data_expression& arg0)
1505 {
1506 make_application(result, sort_real::floor(),arg0);
1507 }
1508
1509 /// \brief Recogniser for application of floor.
1510 /// \param e A data expression.
1511 /// \return true iff e is an application of function symbol floor to a
1512 /// number of arguments.
1513 inline
1515 {
1516 return is_application(e) && is_floor_function_symbol(atermpp::down_cast<application>(e).head());
1517 }
1518
1519 /// \brief Generate identifier ceil.
1520 /// \return Identifier ceil.
1521 inline
1522 const core::identifier_string& ceil_name()
1523 {
1524 static core::identifier_string ceil_name = core::identifier_string("ceil");
1525 return ceil_name;
1526 }
1527
1528 /// \brief Constructor for function symbol ceil.
1529
1530 /// \return Function symbol ceil.
1531 inline
1533 {
1535 return ceil;
1536 }
1537
1538 /// \brief Recogniser for function ceil.
1539 /// \param e A data expression.
1540 /// \return true iff e is the function symbol matching ceil.
1541 inline
1543 {
1545 {
1546 return atermpp::down_cast<function_symbol>(e) == ceil();
1547 }
1548 return false;
1549 }
1550
1551 /// \brief Application of function symbol ceil.
1552
1553 /// \param arg0 A data expression.
1554 /// \return Application of ceil to a number of arguments.
1555 inline
1556 application ceil(const data_expression& arg0)
1557 {
1558 return sort_real::ceil()(arg0);
1559 }
1560
1561 /// \brief Make an application of function symbol ceil.
1562 /// \param result The data expression where the ceil expression is put.
1563
1564 /// \param arg0 A data expression.
1565 inline
1566 void make_ceil(data_expression& result, const data_expression& arg0)
1567 {
1568 make_application(result, sort_real::ceil(),arg0);
1569 }
1570
1571 /// \brief Recogniser for application of ceil.
1572 /// \param e A data expression.
1573 /// \return true iff e is an application of function symbol ceil to a
1574 /// number of arguments.
1575 inline
1577 {
1578 return is_application(e) && is_ceil_function_symbol(atermpp::down_cast<application>(e).head());
1579 }
1580
1581 /// \brief Generate identifier round.
1582 /// \return Identifier round.
1583 inline
1584 const core::identifier_string& round_name()
1585 {
1586 static core::identifier_string round_name = core::identifier_string("round");
1587 return round_name;
1588 }
1589
1590 /// \brief Constructor for function symbol round.
1591
1592 /// \return Function symbol round.
1593 inline
1595 {
1597 return round;
1598 }
1599
1600 /// \brief Recogniser for function round.
1601 /// \param e A data expression.
1602 /// \return true iff e is the function symbol matching round.
1603 inline
1605 {
1607 {
1608 return atermpp::down_cast<function_symbol>(e) == round();
1609 }
1610 return false;
1611 }
1612
1613 /// \brief Application of function symbol round.
1614
1615 /// \param arg0 A data expression.
1616 /// \return Application of round to a number of arguments.
1617 inline
1618 application round(const data_expression& arg0)
1619 {
1620 return sort_real::round()(arg0);
1621 }
1622
1623 /// \brief Make an application of function symbol round.
1624 /// \param result The data expression where the round expression is put.
1625
1626 /// \param arg0 A data expression.
1627 inline
1628 void make_round(data_expression& result, const data_expression& arg0)
1629 {
1630 make_application(result, sort_real::round(),arg0);
1631 }
1632
1633 /// \brief Recogniser for application of round.
1634 /// \param e A data expression.
1635 /// \return true iff e is an application of function symbol round to a
1636 /// number of arguments.
1637 inline
1639 {
1640 return is_application(e) && is_round_function_symbol(atermpp::down_cast<application>(e).head());
1641 }
1642
1643 /// \brief Generate identifier \@redfrac.
1644 /// \return Identifier \@redfrac.
1645 inline
1646 const core::identifier_string& reduce_fraction_name()
1647 {
1648 static core::identifier_string reduce_fraction_name = core::identifier_string("@redfrac");
1649 return reduce_fraction_name;
1650 }
1651
1652 /// \brief Constructor for function symbol \@redfrac.
1653
1654 /// \return Function symbol reduce_fraction.
1655 inline
1657 {
1659 return reduce_fraction;
1660 }
1661
1662 /// \brief Recogniser for function \@redfrac.
1663 /// \param e A data expression.
1664 /// \return true iff e is the function symbol matching \@redfrac.
1665 inline
1667 {
1669 {
1670 return atermpp::down_cast<function_symbol>(e) == reduce_fraction();
1671 }
1672 return false;
1673 }
1674
1675 /// \brief Application of function symbol \@redfrac.
1676
1677 /// \param arg0 A data expression.
1678 /// \param arg1 A data expression.
1679 /// \return Application of \@redfrac to a number of arguments.
1680 inline
1681 application reduce_fraction(const data_expression& arg0, const data_expression& arg1)
1682 {
1683 return sort_real::reduce_fraction()(arg0, arg1);
1684 }
1685
1686 /// \brief Make an application of function symbol \@redfrac.
1687 /// \param result The data expression where the \@redfrac expression is put.
1688
1689 /// \param arg0 A data expression.
1690 /// \param arg1 A data expression.
1691 inline
1693 {
1694 make_application(result, sort_real::reduce_fraction(),arg0, arg1);
1695 }
1696
1697 /// \brief Recogniser for application of \@redfrac.
1698 /// \param e A data expression.
1699 /// \return true iff e is an application of function symbol reduce_fraction to a
1700 /// number of arguments.
1701 inline
1703 {
1704 return is_application(e) && is_reduce_fraction_function_symbol(atermpp::down_cast<application>(e).head());
1705 }
1706
1707 /// \brief Generate identifier \@redfracwhr.
1708 /// \return Identifier \@redfracwhr.
1709 inline
1710 const core::identifier_string& reduce_fraction_where_name()
1711 {
1712 static core::identifier_string reduce_fraction_where_name = core::identifier_string("@redfracwhr");
1713 return reduce_fraction_where_name;
1714 }
1715
1716 /// \brief Constructor for function symbol \@redfracwhr.
1717
1718 /// \return Function symbol reduce_fraction_where.
1719 inline
1721 {
1723 return reduce_fraction_where;
1724 }
1725
1726 /// \brief Recogniser for function \@redfracwhr.
1727 /// \param e A data expression.
1728 /// \return true iff e is the function symbol matching \@redfracwhr.
1729 inline
1731 {
1733 {
1734 return atermpp::down_cast<function_symbol>(e) == reduce_fraction_where();
1735 }
1736 return false;
1737 }
1738
1739 /// \brief Application of function symbol \@redfracwhr.
1740
1741 /// \param arg0 A data expression.
1742 /// \param arg1 A data expression.
1743 /// \param arg2 A data expression.
1744 /// \return Application of \@redfracwhr to a number of arguments.
1745 inline
1746 application reduce_fraction_where(const data_expression& arg0, const data_expression& arg1, const data_expression& arg2)
1747 {
1749 }
1750
1751 /// \brief Make an application of function symbol \@redfracwhr.
1752 /// \param result The data expression where the \@redfracwhr expression is put.
1753
1754 /// \param arg0 A data expression.
1755 /// \param arg1 A data expression.
1756 /// \param arg2 A data expression.
1757 inline
1759 {
1760 make_application(result, sort_real::reduce_fraction_where(),arg0, arg1, arg2);
1761 }
1762
1763 /// \brief Recogniser for application of \@redfracwhr.
1764 /// \param e A data expression.
1765 /// \return true iff e is an application of function symbol reduce_fraction_where to a
1766 /// number of arguments.
1767 inline
1769 {
1770 return is_application(e) && is_reduce_fraction_where_function_symbol(atermpp::down_cast<application>(e).head());
1771 }
1772
1773 /// \brief Generate identifier \@redfrachlp.
1774 /// \return Identifier \@redfrachlp.
1775 inline
1776 const core::identifier_string& reduce_fraction_helper_name()
1777 {
1778 static core::identifier_string reduce_fraction_helper_name = core::identifier_string("@redfrachlp");
1779 return reduce_fraction_helper_name;
1780 }
1781
1782 /// \brief Constructor for function symbol \@redfrachlp.
1783
1784 /// \return Function symbol reduce_fraction_helper.
1785 inline
1787 {
1789 return reduce_fraction_helper;
1790 }
1791
1792 /// \brief Recogniser for function \@redfrachlp.
1793 /// \param e A data expression.
1794 /// \return true iff e is the function symbol matching \@redfrachlp.
1795 inline
1797 {
1799 {
1800 return atermpp::down_cast<function_symbol>(e) == reduce_fraction_helper();
1801 }
1802 return false;
1803 }
1804
1805 /// \brief Application of function symbol \@redfrachlp.
1806
1807 /// \param arg0 A data expression.
1808 /// \param arg1 A data expression.
1809 /// \return Application of \@redfrachlp to a number of arguments.
1810 inline
1811 application reduce_fraction_helper(const data_expression& arg0, const data_expression& arg1)
1812 {
1814 }
1815
1816 /// \brief Make an application of function symbol \@redfrachlp.
1817 /// \param result The data expression where the \@redfrachlp expression is put.
1818
1819 /// \param arg0 A data expression.
1820 /// \param arg1 A data expression.
1821 inline
1823 {
1824 make_application(result, sort_real::reduce_fraction_helper(),arg0, arg1);
1825 }
1826
1827 /// \brief Recogniser for application of \@redfrachlp.
1828 /// \param e A data expression.
1829 /// \return true iff e is an application of function symbol reduce_fraction_helper to a
1830 /// number of arguments.
1831 inline
1833 {
1834 return is_application(e) && is_reduce_fraction_helper_function_symbol(atermpp::down_cast<application>(e).head());
1835 }
1836 /// \brief Give all system defined mappings for real_
1837 /// \return All system defined mappings for real_
1838 inline
1840 {
1841 function_symbol_vector result;
1842 result.push_back(sort_real::creal());
1843 result.push_back(sort_real::pos2real());
1844 result.push_back(sort_real::nat2real());
1845 result.push_back(sort_real::int2real());
1846 result.push_back(sort_real::real2pos());
1847 result.push_back(sort_real::real2nat());
1848 result.push_back(sort_real::real2int());
1849 result.push_back(sort_real::maximum(real_(), real_()));
1850 result.push_back(sort_real::minimum(real_(), real_()));
1851 result.push_back(sort_real::abs(real_()));
1852 result.push_back(sort_real::negate(real_()));
1853 result.push_back(sort_real::succ(real_()));
1854 result.push_back(sort_real::pred(real_()));
1855 result.push_back(sort_real::plus(real_(), real_()));
1856 result.push_back(sort_real::minus(real_(), real_()));
1857 result.push_back(sort_real::times(real_(), real_()));
1858 result.push_back(sort_real::exp(real_(), sort_int::int_()));
1859 result.push_back(sort_real::divides(sort_pos::pos(), sort_pos::pos()));
1860 result.push_back(sort_real::divides(sort_nat::nat(), sort_nat::nat()));
1861 result.push_back(sort_real::divides(sort_int::int_(), sort_int::int_()));
1862 result.push_back(sort_real::divides(real_(), real_()));
1863 result.push_back(sort_real::floor());
1864 result.push_back(sort_real::ceil());
1865 result.push_back(sort_real::round());
1866 result.push_back(sort_real::reduce_fraction());
1867 result.push_back(sort_real::reduce_fraction_where());
1868 result.push_back(sort_real::reduce_fraction_helper());
1869 return result;
1870 }
1871
1872 /// \brief Give all system defined mappings and constructors for real_
1873 /// \return All system defined mappings for real_
1874 inline
1876 {
1877 function_symbol_vector result=real_generate_functions_code();
1878 for(const function_symbol& f: real_generate_constructors_code())
1879 {
1880 result.push_back(f);
1881 }
1882 return result;
1883 }
1884
1885 /// \brief Give all system defined mappings that can be used in mCRL2 specs for real_
1886 /// \return All system defined mappings for that can be used in mCRL2 specificationis real_
1887 inline
1889 {
1890 function_symbol_vector result;
1891 result.push_back(sort_real::creal());
1892 result.push_back(sort_real::pos2real());
1893 result.push_back(sort_real::nat2real());
1894 result.push_back(sort_real::int2real());
1895 result.push_back(sort_real::real2pos());
1896 result.push_back(sort_real::real2nat());
1897 result.push_back(sort_real::real2int());
1898 result.push_back(sort_real::maximum(real_(), real_()));
1899 result.push_back(sort_real::minimum(real_(), real_()));
1900 result.push_back(sort_real::abs(real_()));
1901 result.push_back(sort_real::negate(real_()));
1902 result.push_back(sort_real::succ(real_()));
1903 result.push_back(sort_real::pred(real_()));
1904 result.push_back(sort_real::plus(real_(), real_()));
1905 result.push_back(sort_real::minus(real_(), real_()));
1906 result.push_back(sort_real::times(real_(), real_()));
1907 result.push_back(sort_real::exp(real_(), sort_int::int_()));
1908 result.push_back(sort_real::divides(sort_pos::pos(), sort_pos::pos()));
1909 result.push_back(sort_real::divides(sort_nat::nat(), sort_nat::nat()));
1910 result.push_back(sort_real::divides(sort_int::int_(), sort_int::int_()));
1911 result.push_back(sort_real::divides(real_(), real_()));
1912 result.push_back(sort_real::floor());
1913 result.push_back(sort_real::ceil());
1914 result.push_back(sort_real::round());
1915 result.push_back(sort_real::reduce_fraction());
1916 result.push_back(sort_real::reduce_fraction_where());
1917 result.push_back(sort_real::reduce_fraction_helper());
1918 return result;
1919 }
1920
1921
1922 // 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
1924 /// \brief Give all system defined mappings that are to be implemented in C++ code for real_
1925 /// \return A mapping from C++ implementable function symbols to system defined mappings implemented in C++ code for real_
1926 inline
1928 {
1929 implementation_map result;
1930 return result;
1931 }
1932 ///\brief Function for projecting out argument.
1933 /// left from an application.
1934 /// \param e A data expression.
1935 /// \pre left is defined for e.
1936 /// \return The argument of e that corresponds to left.
1937 inline
1939 {
1941 return atermpp::down_cast<application>(e)[0];
1942 }
1943
1944 ///\brief Function for projecting out argument.
1945 /// right from an application.
1946 /// \param e A data expression.
1947 /// \pre right is defined for e.
1948 /// \return The argument of e that corresponds to right.
1949 inline
1951 {
1953 return atermpp::down_cast<application>(e)[1];
1954 }
1955
1956 ///\brief Function for projecting out argument.
1957 /// arg from an application.
1958 /// \param e A data expression.
1959 /// \pre arg is defined for e.
1960 /// \return The argument of e that corresponds to arg.
1961 inline
1963 {
1965 return atermpp::down_cast<application>(e)[0];
1966 }
1967
1968 ///\brief Function for projecting out argument.
1969 /// arg1 from an application.
1970 /// \param e A data expression.
1971 /// \pre arg1 is defined for e.
1972 /// \return The argument of e that corresponds to arg1.
1973 inline
1975 {
1977 return atermpp::down_cast<application>(e)[0];
1978 }
1979
1980 ///\brief Function for projecting out argument.
1981 /// arg2 from an application.
1982 /// \param e A data expression.
1983 /// \pre arg2 is defined for e.
1984 /// \return The argument of e that corresponds to arg2.
1985 inline
1987 {
1989 return atermpp::down_cast<application>(e)[1];
1990 }
1991
1992 ///\brief Function for projecting out argument.
1993 /// arg3 from an application.
1994 /// \param e A data expression.
1995 /// \pre arg3 is defined for e.
1996 /// \return The argument of e that corresponds to arg3.
1997 inline
1999 {
2001 return atermpp::down_cast<application>(e)[2];
2002 }
2003
2004 /// \brief Give all system defined equations for real_
2005 /// \return All system defined equations for sort real_
2006 inline
2008 {
2009 variable vm("m",sort_nat::nat());
2010 variable vn("n",sort_nat::nat());
2011 variable vp("p",sort_pos::pos());
2012 variable vq("q",sort_pos::pos());
2013 variable vx("x",sort_int::int_());
2014 variable vy("y",sort_int::int_());
2015 variable vr("r",real_());
2016 variable vs("s",real_());
2017
2018 data_equation_vector result;
2019 result.emplace_back(variable_list({vp, vq, vx, vy}), equal_to(creal(vx, vp), creal(vy, vq)), equal_to(times(vx, sort_int::cint(sort_nat::cnat(vq))), times(vy, sort_int::cint(sort_nat::cnat(vp)))));
2020 result.emplace_back(variable_list({vp, vq, vx, vy}), less(creal(vx, vp), creal(vy, vq)), less(times(vx, sort_int::cint(sort_nat::cnat(vq))), times(vy, sort_int::cint(sort_nat::cnat(vp)))));
2021 result.emplace_back(variable_list({vp, vq, vx, vy}), less_equal(creal(vx, vp), creal(vy, vq)), less_equal(times(vx, sort_int::cint(sort_nat::cnat(vq))), times(vy, sort_int::cint(sort_nat::cnat(vp)))));
2022 result.emplace_back(variable_list({vx}), int2real(vx), creal(vx, sort_pos::c1()));
2023 result.emplace_back(variable_list({vn}), nat2real(vn), creal(sort_int::cint(vn), sort_pos::c1()));
2024 result.emplace_back(variable_list({vp}), pos2real(vp), creal(sort_int::cint(sort_nat::cnat(vp)), sort_pos::c1()));
2025 result.emplace_back(variable_list({vx}), real2int(creal(vx, sort_pos::c1())), vx);
2026 result.emplace_back(variable_list({vx}), real2nat(creal(vx, sort_pos::c1())), sort_int::int2nat(vx));
2027 result.emplace_back(variable_list({vx}), real2pos(creal(vx, sort_pos::c1())), sort_int::int2pos(vx));
2028 result.emplace_back(variable_list({vr, vs}), minimum(vr, vs), if_(less(vr, vs), vr, vs));
2029 result.emplace_back(variable_list({vr, vs}), maximum(vr, vs), if_(less(vr, vs), vs, vr));
2030 result.emplace_back(variable_list({vr}), abs(vr), if_(less(vr, creal(sort_int::cint(sort_nat::c0()), sort_pos::c1())), negate(vr), vr));
2031 result.emplace_back(variable_list({vp, vx}), negate(creal(vx, vp)), creal(negate(vx), vp));
2032 result.emplace_back(variable_list({vp, vx}), succ(creal(vx, vp)), creal(plus(vx, sort_int::cint(sort_nat::cnat(vp))), vp));
2033 result.emplace_back(variable_list({vp, vx}), pred(creal(vx, vp)), creal(minus(vx, sort_int::cint(sort_nat::cnat(vp))), vp));
2034 result.emplace_back(variable_list({vp, vq, vx, vy}), plus(creal(vx, vp), creal(vy, vq)), reduce_fraction(plus(times(vx, sort_int::cint(sort_nat::cnat(vq))), times(vy, sort_int::cint(sort_nat::cnat(vp)))), sort_int::cint(sort_nat::cnat(times(vp, vq)))));
2035 result.emplace_back(variable_list({vp, vq, vx, vy}), minus(creal(vx, vp), creal(vy, vq)), reduce_fraction(minus(times(vx, sort_int::cint(sort_nat::cnat(vq))), times(vy, sort_int::cint(sort_nat::cnat(vp)))), sort_int::cint(sort_nat::cnat(times(vp, vq)))));
2036 result.emplace_back(variable_list({vp, vq, vx, vy}), times(creal(vx, vp), creal(vy, vq)), reduce_fraction(times(vx, vy), sort_int::cint(sort_nat::cnat(times(vp, vq)))));
2037 result.emplace_back(variable_list({vp, vr}), times(vr, creal(sort_int::cint(sort_nat::c0()), vp)), creal(sort_int::cint(sort_nat::c0()), sort_pos::c1()));
2038 result.emplace_back(variable_list({vp, vr}), times(creal(sort_int::cint(sort_nat::c0()), vp), vr), creal(sort_int::cint(sort_nat::c0()), sort_pos::c1()));
2039 result.emplace_back(variable_list({vp, vq, vx, vy}), not_equal_to(vy, sort_int::cint(sort_nat::c0())), divides(creal(vx, vp), creal(vy, vq)), reduce_fraction(times(vx, sort_int::cint(sort_nat::cnat(vq))), times(vy, sort_int::cint(sort_nat::cnat(vp)))));
2040 result.emplace_back(variable_list({vp, vq}), divides(vp, vq), reduce_fraction(sort_int::cint(sort_nat::cnat(vp)), sort_int::cint(sort_nat::cnat(vq))));
2041 result.emplace_back(variable_list({vm, vn}), not_equal_to(vn, sort_nat::c0()), divides(vm, vn), reduce_fraction(sort_int::cint(vm), sort_int::cint(vn)));
2042 result.emplace_back(variable_list({vx, vy}), not_equal_to(vy, sort_int::cint(sort_nat::c0())), divides(vx, vy), reduce_fraction(vx, vy));
2043 result.emplace_back(variable_list({vn, vp, vx}), exp(creal(vx, vp), sort_int::cint(vn)), reduce_fraction(exp(vx, vn), sort_int::cint(sort_nat::cnat(exp(vp, vn)))));
2044 result.emplace_back(variable_list({vp, vq, vx}), not_equal_to(vx, sort_int::cint(sort_nat::c0())), exp(creal(vx, vp), sort_int::cneg(vq)), reduce_fraction(sort_int::cint(sort_nat::cnat(exp(vp, sort_nat::cnat(vq)))), exp(vx, sort_nat::cnat(vq))));
2045 result.emplace_back(variable_list({vp, vx}), floor(creal(vx, vp)), sort_int::div(vx, vp));
2046 result.emplace_back(variable_list({vr}), ceil(vr), negate(floor(negate(vr))));
2047 result.emplace_back(variable_list({vr}), round(vr), floor(plus(vr, creal(sort_int::cint(sort_nat::cnat(sort_pos::c1())), sort_pos::cdub(sort_bool::false_(), sort_pos::c1())))));
2048 result.emplace_back(variable_list({vp, vx}), reduce_fraction(vx, sort_int::cneg(vp)), reduce_fraction(negate(vx), sort_int::cint(sort_nat::cnat(vp))));
2049 result.emplace_back(variable_list({vp, vx}), reduce_fraction(vx, sort_int::cint(sort_nat::cnat(vp))), reduce_fraction_where(vp, sort_int::div(vx, vp), sort_int::mod(vx, vp)));
2050 result.emplace_back(variable_list({vp, vx}), reduce_fraction_where(vp, vx, sort_nat::c0()), creal(vx, sort_pos::c1()));
2051 result.emplace_back(variable_list({vp, vq, vx}), reduce_fraction_where(vp, vx, sort_nat::cnat(vq)), reduce_fraction_helper(reduce_fraction(sort_int::cint(sort_nat::cnat(vp)), sort_int::cint(sort_nat::cnat(vq))), vx));
2052 result.emplace_back(variable_list({vp, vx, vy}), reduce_fraction_helper(creal(vx, vp), vy), creal(plus(sort_int::cint(sort_nat::cnat(vp)), times(vy, vx)), sort_int::int2pos(vx)));
2053 return result;
2054 }
2055
2056} // namespace mcrl2::data::sort_real
2057
2058#endif // MCRL2_DATA_REAL1_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.
bag_comprehension(const bag_comprehension &) noexcept=default
Move semantics.
bag_comprehension & operator=(bag_comprehension &&) noexcept=default
bag_comprehension & operator=(const bag_comprehension &) noexcept=default
bag_comprehension(bag_comprehension &&) noexcept=default
bag_comprehension(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
\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
exists(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Definition exists.h:44
exists & operator=(exists &&) noexcept=default
exists(const aterm &d)
Definition exists.h:31
exists(exists &&) noexcept=default
exists & operator=(const exists &) noexcept=default
exists(const exists &) noexcept=default
Move semantics.
\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.
Abstract base class for identifier generators. Identifier generators generate fresh names that do not...
virtual core::identifier_string operator()(const std::string &hint, bool add_to_context=true)
Returns a fresh identifier, with the given hint as prefix. The returned identifier is added to the co...
virtual ~identifier_generator()=default
Destructor.
virtual void add_identifier(const core::identifier_string &s)=0
Adds the identifier s to the context.
virtual bool has_identifier(const core::identifier_string &s) const =0
Returns true if the identifier s appears in the context.
identifier_generator()=default
Constructor.
void remove_identifiers(const std::set< core::identifier_string > &ids)
Remove a set of identifiers from the context.
virtual void remove_identifier(const core::identifier_string &s)=0
Removes the identifier s from the context.
virtual void clear_context()=0
Clears the context.
void add_identifiers(const std::set< core::identifier_string > &ids)
Add a set of identifiers to the context.
\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
lambda(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Definition lambda.h:57
lambda(const variable &variable, const data_expression &body)
Definition lambda.h:45
lambda & operator=(const lambda &) noexcept=default
lambda(const aterm &d)
Definition lambda.h:33
lambda()=default
Constructor.
lambda(const lambda &) noexcept=default
Move semantics.
lambda(lambda &&) noexcept=default
lambda & operator=(lambda &&) noexcept=default
\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
Identifier generator that stores the identifiers of the context in a multiset. If an identifier occur...
bool has_identifier(const core::identifier_string &s) const override
Returns true if the identifier s appears in the context.
void remove_identifier(const core::identifier_string &s) override
Removes one occurrence of the identifier s from the context.
void add_identifier(const core::identifier_string &s) override
Adds the identifier s to the context.
void clear_context() override
Clears the context.
const std::multiset< core::identifier_string > & context() const
Returns the context.
std::multiset< core::identifier_string > m_identifiers
The context of the identifier generator.
multiset_identifier_generator()=default
Constructor.
\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.
set_comprehension & operator=(set_comprehension &&) noexcept=default
set_comprehension(set_comprehension &&) noexcept=default
set_comprehension(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
set_comprehension & operator=(const set_comprehension &) noexcept=default
set_comprehension(const set_comprehension &) noexcept=default
Move semantics.
\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)
Identifier generator that stores the identifiers of the context in a set. Using the operator()() and ...
const std::set< core::identifier_string > & context() const
Returns the context.
void remove_identifier(const core::identifier_string &s) override
Removes one occurrence of the identifier s from the context.
set_identifier_generator()=default
Constructor.
void clear_context() override
Clears the context.
void add_identifier(const core::identifier_string &s) override
Adds the identifier s to the context.
std::set< core::identifier_string > m_identifiers
The context of the identifier generator.
bool has_identifier(const core::identifier_string &s) const override
Returns true if the identifier s appears in the context.
\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
data_equation_vector recogniser_equations() const
Generate equations for the recognisers of this sort, assuming that this sort is referred to with s.
function_symbol smaller_arguments_function(const sort_expression &s) const
structured_sort & operator=(const structured_sort &) noexcept=default
function_symbol_vector recogniser_functions(const sort_expression &s) const
function_symbol to_pos_function(const sort_expression &s) const
function_symbol_vector constructor_functions(const sort_expression &s) const
data_equation_vector comparison_equations() const
Returns the equations for the functions used to implement comparison operators on this sort....
data_equation_vector constructor_equations(const sort_expression &s) const
data_equation_vector recogniser_equations(const sort_expression &s) const
static bool has_recogniser(structured_sort_constructor const &s)
data_equation_vector projection_equations() const
Generate equations for the projection functions of this sort.
function_symbol equal_arguments_function(const sort_expression &s) const
const structured_sort_constructor_list & constructors() const
function_symbol_vector constructor_functions() const
Returns the constructor functions of this sort, such that the result can be used by the rewriter.
function_symbol_vector projection_functions() const
Returns the projection functions of this sort, such that the result can be used by the rewriter.
function_symbol_vector comparison_functions(const sort_expression &s) const
function_symbol_vector comparison_functions() const
Returns the additional functions of this sort, used to implement its comparison operators.
data_equation_vector comparison_equations(const sort_expression &s) const
structured_sort(const structured_sort_constructor_list &constructors)
\brief Constructor Z14.
function_symbol_vector recogniser_functions() const
Returns the recogniser functions of this sort, such that the result can be used by the rewriter.
function_symbol_vector projection_functions(const sort_expression &s) const
structured_sort()
\brief Default constructor X3.
structured_sort(structured_sort &&) noexcept=default
data_equation_vector projection_equations(const sort_expression &s) const
structured_sort(const atermpp::aterm &term)
structured_sort & operator=(structured_sort &&) noexcept=default
data_equation_vector constructor_equations() const
Returns the equations for ==, < and <= for this sort, such that the result can be used by the rewrite...
function_symbol smaller_equal_arguments_function(const sort_expression &s) 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:393
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:223
data_specification parse_data_specification_new(const std::string &text)
Definition data.cpp:234
variable_list parse_variable_declaration_list(const std::string &text)
Definition data.cpp:245
variable_list parse_variables(const std::string &text)
Definition data.cpp:212
sort_expression parse_sort_expression(const std::string &text)
Definition data.cpp:202
A collection of utilities for lazy expression construction.
data_expression implies(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p implies q.
data_expression join_and(ForwardTraversalIterator first, ForwardTraversalIterator last)
Returns and applied to the sequence of data expressions [first, last)
data_expression not_(data_expression const &p)
Returns an expression equivalent to not p.
data_expression equal_to(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p == q.
data_expression not_equal_to(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p == q.
data_expression and_(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p or q.
data_expression or_(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p and q.
data_expression join_or(ForwardTraversalIterator first, ForwardTraversalIterator last)
Returns or applied to the sequence of data expressions [first, last)
data_expression if_(const data_expression &cond, const data_expression &then, const data_expression &else_)
Returns an expression equivalent to if(cond,then,else_)
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
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 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
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
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
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
bool is_boolean_constant(data_expression const &b)
Determines whether b is a Boolean constant.
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
data_expression bool_(bool b)
Constructs expression of type Bool from an integral type.
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
void make_not_(data_expression &result, const data_expression &arg0)
Make an application of function symbol !.
Definition bool.h:204
void make_and_(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol &&.
Definition bool.h:268
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_or_(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol ||.
Definition bool.h:332
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_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
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
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
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
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_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_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
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_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
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
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 int_.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition int1.h:1489
bool is_int(const sort_expression &e)
Recogniser for sort expression Int.
Definition int1.h:54
bool is_cneg_application(const atermpp::aterm &e)
Recogniser for application of @cNeg.
Definition int1.h:183
bool is_cint_application(const atermpp::aterm &e)
Recogniser for application of @cInt.
Definition int1.h:121
bool is_integer_constant(const data_expression &n)
Determines whether n is an integer constant.
std::string integer_constant_as_string(const data_expression &n)
Return the string representation of an integer number.
data_expression int_(const std::string &n)
Constructs expression of type Int from a string.
data_expression int_(T t)
Constructs expression of type pos from an integral type.
NUMERIC_VALUE integer_constant_to_value(const data_expression &n)
Return the NUMERIC_VALUE representation of an integer number.
const basic_sort & int_()
Constructor for sort expression Int.
Definition int1.h:44
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:2254
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:890
const function_symbol & generalised_divmod()
Constructor for function symbol @gdivmod.
Definition nat1.h:1976
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:1712
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:1328
void make_sqrt(data_expression &result, const data_expression &arg0)
Make an application of function symbol sqrt.
Definition nat1.h:1694
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:2014
bool is_gte_subtract_with_borrow_function_symbol(const atermpp::aterm &e)
Recogniser for function @gtesubtb.
Definition nat1.h:928
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:1506
void make_dub(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @dub.
Definition nat1.h:743
void make_div(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol div.
Definition nat1.h:1097
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:1748
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:1161
application generalised_divmod(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @gdivmod.
Definition nat1.h:2002
bool is_swap_zero_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero.
Definition nat1.h:1402
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:1115
const function_symbol & gte_subtract_with_borrow()
Constructor for function symbol @gtesubtb.
Definition nat1.h:918
bool is_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @gdivmod.
Definition nat1.h:2024
bool is_div_application(const atermpp::aterm &e)
Recogniser for application of div.
Definition nat1.h:1107
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:2080
const core::identifier_string & swap_zero_min_name()
Generate identifier @swap_zero_min.
Definition nat1.h:1514
const function_symbol & divmod()
Constructor for function symbol @divmod.
Definition nat1.h:1912
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:795
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:1135
function_symbol exp(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:1187
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:974
const function_symbol & dubsucc()
Constructor for function symbol @dubsucc.
Definition nat1.h:771
const function_symbol & swap_zero_add()
Constructor for function symbol @swap_zero_add.
Definition nat1.h:1456
function_symbol_vector nat_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for nat.
Definition nat1.h:2151
data_equation_vector nat_generate_equations_code()
Give all system defined equations for nat.
Definition nat1.h:2287
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
application exp(const data_expression &arg0, const data_expression &arg1)
Application of function symbol exp.
Definition nat1.h:1227
const core::identifier_string & exp_name()
Generate identifier exp.
Definition nat1.h:1179
const function_symbol & swap_zero()
Constructor for function symbol @swap_zero.
Definition nat1.h:1392
application swap_zero(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @swap_zero.
Definition nat1.h:1417
bool is_first_function_symbol(const atermpp::aterm &e)
Recogniser for function @first.
Definition nat1.h:1798
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:2052
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition nat1.h:863
function_symbol_vector nat_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for nat.
Definition nat1.h:2138
std::string natural_constant_as_string(const data_expression &n_in)
Return the string representation of a natural number.
application sqrt(const data_expression &arg0)
Application of function symbol sqrt.
Definition nat1.h:1684
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:1812
const core::identifier_string & plus_name()
Generate identifier +.
Definition nat1.h:823
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:2242
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:1051
const function_symbol & mod()
Constructor for function symbol mod.
Definition nat1.h:1125
void make_monus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monus.
Definition nat1.h:1364
const function_symbol & sqrt()
Constructor for function symbol sqrt.
Definition nat1.h:1660
void make_dubsucc(data_expression &result, const data_expression &arg0)
Make an application of function symbol @dubsucc.
Definition nat1.h:805
application even(const data_expression &arg0)
Application of function symbol @even.
Definition nat1.h:1290
const function_symbol & doubly_generalised_divmod()
Constructor for function symbol @ggdivmod.
Definition nat1.h:2042
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:1300
void make_gte_subtract_with_borrow(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @gtesubtb.
Definition nat1.h:956
bool is_sqrt_nat_aux_func_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_nat.
Definition nat1.h:1732
const function_symbol & even()
Constructor for function symbol @even.
Definition nat1.h:1266
const core::identifier_string & first_name()
Generate identifier @first.
Definition nat1.h:1778
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:1632
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:717
application cnat(const data_expression &arg0)
Application of function symbol @cNat.
Definition nat1.h:161
bool is_swap_zero_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero.
Definition nat1.h:1438
const core::identifier_string & even_name()
Generate identifier @even.
Definition nat1.h:1256
const core::identifier_string & swap_zero_name()
Generate identifier @swap_zero.
Definition nat1.h:1382
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:1211
bool is_monus_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus.
Definition nat1.h:1338
bool is_mod_application(const atermpp::aterm &e)
Recogniser for application of mod.
Definition nat1.h:1171
bool is_even_function_symbol(const atermpp::aterm &e)
Recogniser for function @even.
Definition nat1.h:1276
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:1248
const function_symbol & swap_zero_min()
Constructor for function symbol @swap_zero_min.
Definition nat1.h:1524
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:1722
bool is_last_application(const atermpp::aterm &e)
Recogniser for application of @last.
Definition nat1.h:1894
void make_exp(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol exp.
Definition nat1.h:1238
const function_symbol & div()
Constructor for function symbol div.
Definition nat1.h:1061
application last(const data_expression &arg0)
Application of function symbol @last.
Definition nat1.h:1874
const core::identifier_string & doubly_generalised_divmod_name()
Generate identifier @ggdivmod.
Definition nat1.h:2032
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_gte_subtract_with_borrow_application(const atermpp::aterm &e)
Recogniser for application of @gtesubtb.
Definition nat1.h:966
bool is_swap_zero_min_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_min.
Definition nat1.h:1574
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
Definition nat1.h:831
const core::identifier_string & dubsucc_name()
Generate identifier @dubsucc.
Definition nat1.h:761
bool is_first_application(const atermpp::aterm &e)
Recogniser for application of @first.
Definition nat1.h:1832
bool is_sqrt_application(const atermpp::aterm &e)
Recogniser for application of sqrt.
Definition nat1.h:1704
const function_symbol & first()
Constructor for function symbol @first.
Definition nat1.h:1788
void make_first(data_expression &result, const data_expression &arg0)
Make an application of function symbol @first.
Definition nat1.h:1822
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:1986
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:1483
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:1496
const core::identifier_string & swap_zero_monus_name()
Generate identifier @swap_zero_monus.
Definition nat1.h:1582
application gte_subtract_with_borrow(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @gtesubtb.
Definition nat1.h:944
function_symbol_vector nat_generate_functions_code()
Give all system defined mappings for nat.
Definition nat1.h:2097
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:1086
bool is_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod.
Definition nat1.h:1922
const function_symbol & swap_zero_monus()
Constructor for function symbol @swap_zero_monus.
Definition nat1.h:1592
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition nat1.h:1033
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:1551
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:1966
application doubly_generalised_divmod(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @ggdivmod.
Definition nat1.h:2068
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:1318
application monus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @monus.
Definition nat1.h:1353
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:2266
void make_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @divmod.
Definition nat1.h:1948
application dub(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @dub.
Definition nat1.h:732
implementation_map nat_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for nat.
Definition nat1.h:2195
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition nat1.h:2230
const core::identifier_string & gte_subtract_with_borrow_name()
Generate identifier @gtesubtb.
Definition nat1.h:908
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:2218
bool is_swap_zero_monus_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_monus.
Definition nat1.h:1642
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:1564
const core::identifier_string & dub_name()
Generate identifier @dub.
Definition nat1.h:697
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 divmod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @divmod.
Definition nat1.h:1937
bool is_swap_zero_add_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_add.
Definition nat1.h:1466
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:1602
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:1840
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:1760
bool is_sqrt_nat_aux_func_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_nat.
Definition nat1.h:1770
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition nat1.h:2206
bool is_sqrt_function_symbol(const atermpp::aterm &e)
Recogniser for function sqrt.
Definition nat1.h:1670
application mod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol mod.
Definition nat1.h:1150
bool is_cnat_function_symbol(const atermpp::aterm &e)
Recogniser for function @cNat.
Definition nat1.h:147
NUMERIC_TYPE natural_constant_to_value(const data_expression &n)
Return the NUMERIC_VALUE representation of a natural number.
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:1850
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:900
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
Definition nat1.h:467
data_expression nat(T t)
Constructs expression of type pos from an integral type.
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:1428
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:1446
bool is_dubsucc_function_symbol(const atermpp::aterm &e)
Recogniser for function @dubsucc.
Definition nat1.h:781
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition nat1.h:879
bool is_dubsucc_application(const atermpp::aterm &e)
Recogniser for application of @dubsucc.
Definition nat1.h:815
bool is_swap_zero_min_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_min.
Definition nat1.h:1534
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:1650
bool is_doubly_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @ggdivmod.
Definition nat1.h:2090
bool is_last_function_symbol(const atermpp::aterm &e)
Recogniser for function @last.
Definition nat1.h:1860
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition nat1.h:1022
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition nat1.h:1043
bool is_div_function_symbol(const atermpp::aterm &e)
Recogniser for function div.
Definition nat1.h:1071
const core::identifier_string & divmod_name()
Generate identifier @divmod.
Definition nat1.h:1902
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:982
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition nat1.h:1006
data_expression nat(const std::string &n)
Constructs expression of type Nat from a string.
bool is_dub_application(const atermpp::aterm &e)
Recogniser for application of @dub.
Definition nat1.h:753
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:707
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:1619
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:1884
application nat2pos(const data_expression &arg0)
Application of function symbol Nat2Pos.
Definition nat1.h:383
bool is_natural_constant(const data_expression &n)
Determines whether n is a natural constant.
bool is_monus_application(const atermpp::aterm &e)
Recogniser for application of @monus.
Definition nat1.h:1374
bool is_divmod_application(const atermpp::aterm &e)
Recogniser for application of @divmod.
Definition nat1.h:1958
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
Definition nat1.h:2278
bool is_even_application(const atermpp::aterm &e)
Recogniser for application of @even.
Definition nat1.h:1310
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
std::string positive_constant_as_string(const data_expression &n_in)
Return the string representation of a positive number.
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
data_expression pos(const T t)
Constructs expression of type Bool from an integral type Type T is an unsigned integral type.
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_positive_constant(const data_expression &n)
Determines whether n is a positive constant.
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
data_expression pos(const std::string &n)
Constructs expression of type Pos from a string.
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
NUMERIC_TYPE positive_constant_to_value(const data_expression &n)
Returns the NUMERIC_TYPE representation of a positive number.
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 real_.
function_symbol minimum(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:647
void make_abs(data_expression &result, const data_expression &arg0)
Make an application of function symbol abs.
Definition real1.h:781
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:1056
bool is_real2int_function_symbol(const atermpp::aterm &e)
Recogniser for function Real2Int.
Definition real1.h:488
data_expression real_(T numerator, T denominator)
Constructs expression of type Real from an integral type.
application exp(const data_expression &arg0, const data_expression &arg1)
Application of function symbol exp.
Definition real1.h:1367
void make_minus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
Definition real1.h:1208
const function_symbol & creal()
Constructor for function symbol @cReal.
Definition real1.h:104
void make_reduce_fraction(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @redfrac.
Definition real1.h:1692
const core::identifier_string & maximum_name()
Generate identifier max.
Definition real1.h:530
void make_negate(data_expression &result, const data_expression &arg0)
Make an application of function symbol -.
Definition real1.h:864
const core::identifier_string & minus_name()
Generate identifier -.
Definition real1.h:1141
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
Definition real1.h:922
application reduce_fraction_helper(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @redfrachlp.
Definition real1.h:1811
const core::identifier_string & real_name()
Definition real1.h:36
const function_symbol & pos2real()
Constructor for function symbol Pos2Real.
Definition real1.h:168
const core::identifier_string & reduce_fraction_where_name()
Generate identifier @redfracwhr.
Definition real1.h:1710
const function_symbol & round()
Constructor for function symbol round.
Definition real1.h:1594
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
Definition real1.h:1096
function_symbol times(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:1234
application divides(const data_expression &arg0, const data_expression &arg1)
Application of function symbol /.
Definition real1.h:1431
bool is_abs_application(const atermpp::aterm &e)
Recogniser for application of abs.
Definition real1.h:791
function_symbol divides(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:1404
const core::identifier_string & int2real_name()
Generate identifier Int2Real.
Definition real1.h:282
data_expression real_(T t)
Constructs expression of type Real from an integral type.
const function_symbol & real2nat()
Constructor for function symbol Real2Nat.
Definition real1.h:416
bool is_divides_function_symbol(const atermpp::aterm &e)
Recogniser for function /.
Definition real1.h:1415
const core::identifier_string & creal_name()
Generate identifier @cReal.
Definition real1.h:94
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
Definition real1.h:947
bool is_exp_application(const atermpp::aterm &e)
Recogniser for application of exp.
Definition real1.h:1388
application real2nat(const data_expression &arg0)
Application of function symbol Real2Nat.
Definition real1.h:440
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
Definition real1.h:1962
bool is_int2real_application(const atermpp::aterm &e)
Recogniser for application of Int2Real.
Definition real1.h:336
const function_symbol & ceil()
Constructor for function symbol ceil.
Definition real1.h:1532
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
Definition real1.h:1986
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition real1.h:1133
bool is_divides_application(const atermpp::aterm &e)
Recogniser for application of /.
Definition real1.h:1452
bool is_reduce_fraction_function_symbol(const atermpp::aterm &e)
Recogniser for function @redfrac.
Definition real1.h:1666
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
Definition real1.h:594
void make_exp(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol exp.
Definition real1.h:1378
const core::identifier_string & divides_name()
Generate identifier /.
Definition real1.h:1396
bool is_real2int_application(const atermpp::aterm &e)
Recogniser for application of Real2Int.
Definition real1.h:522
const core::identifier_string & ceil_name()
Generate identifier ceil.
Definition real1.h:1522
bool is_creal_function_symbol(const atermpp::aterm &e)
Recogniser for function @cReal.
Definition real1.h:114
void make_real2nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol Real2Nat.
Definition real1.h:450
bool is_minus_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
Definition real1.h:1181
application creal(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @cReal.
Definition real1.h:129
bool is_reduce_fraction_where_application(const atermpp::aterm &e)
Recogniser for application of @redfracwhr.
Definition real1.h:1768
function_symbol succ(const sort_expression &s0)
Definition real1.h:890
application negate(const data_expression &arg0)
Application of function symbol -.
Definition real1.h:854
bool is_floor_function_symbol(const atermpp::aterm &e)
Recogniser for function floor.
Definition real1.h:1480
void make_int2real(data_expression &result, const data_expression &arg0)
Make an application of function symbol Int2Real.
Definition real1.h:326
void make_divides(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol /.
Definition real1.h:1442
const core::identifier_string & floor_name()
Generate identifier floor.
Definition real1.h:1460
const core::identifier_string & times_name()
Generate identifier *.
Definition real1.h:1226
bool is_abs_function_symbol(const atermpp::aterm &e)
Recogniser for function abs.
Definition real1.h:756
bool is_ceil_application(const atermpp::aterm &e)
Recogniser for application of ceil.
Definition real1.h:1576
application succ(const data_expression &arg0)
Application of function symbol succ.
Definition real1.h:937
const function_symbol & real2int()
Constructor for function symbol Real2Int.
Definition real1.h:478
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
Definition real1.h:631
application nat2real(const data_expression &arg0)
Application of function symbol Nat2Real.
Definition real1.h:254
const function_symbol & reduce_fraction()
Constructor for function symbol @redfrac.
Definition real1.h:1656
bool is_creal_application(const atermpp::aterm &e)
Recogniser for application of @cReal.
Definition real1.h:150
bool is_pred_application(const atermpp::aterm &e)
Recogniser for application of pred.
Definition real1.h:1040
const core::identifier_string & negate_name()
Generate identifier -.
Definition real1.h:799
void make_reduce_fraction_helper(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @redfrachlp.
Definition real1.h:1822
void make_pos2real(data_expression &result, const data_expression &arg0)
Make an application of function symbol Pos2Real.
Definition real1.h:202
function_symbol pred(const sort_expression &s0)
Definition real1.h:973
bool is_round_function_symbol(const atermpp::aterm &e)
Recogniser for function round.
Definition real1.h:1604
const core::identifier_string & succ_name()
Generate identifier succ.
Definition real1.h:882
const function_symbol & reduce_fraction_helper()
Constructor for function symbol @redfrachlp.
Definition real1.h:1786
const core::identifier_string & abs_name()
Generate identifier abs.
Definition real1.h:724
data_equation_vector real_generate_equations_code()
Give all system defined equations for real_.
Definition real1.h:2007
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
Definition real1.h:1266
const core::identifier_string & round_name()
Generate identifier round.
Definition real1.h:1584
bool is_negate_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
Definition real1.h:839
application int2real(const data_expression &arg0)
Application of function symbol Int2Real.
Definition real1.h:316
function_symbol minus(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:1149
const basic_sort & real_()
Constructor for sort expression Real.
Definition real1.h:45
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
Definition real1.h:679
const function_symbol & floor()
Constructor for function symbol floor.
Definition real1.h:1470
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
Definition real1.h:706
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
Definition real1.h:1293
const core::identifier_string & reduce_fraction_helper_name()
Generate identifier @redfrachlp.
Definition real1.h:1776
function_symbol_vector real_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for real_.
Definition real1.h:75
bool is_real2pos_function_symbol(const atermpp::aterm &e)
Recogniser for function Real2Pos.
Definition real1.h:364
void make_real2int(data_expression &result, const data_expression &arg0)
Make an application of function symbol Real2Int.
Definition real1.h:512
function_symbol_vector real_generate_constructors_code()
Give all system defined constructors for real_.
Definition real1.h:67
void make_nat2real(data_expression &result, const data_expression &arg0)
Make an application of function symbol Nat2Real.
Definition real1.h:264
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
Definition real1.h:621
bool is_floor_application(const atermpp::aterm &e)
Recogniser for application of floor.
Definition real1.h:1514
application reduce_fraction_where(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @redfracwhr.
Definition real1.h:1746
bool is_real(const sort_expression &e)
Recogniser for sort expression Real.
Definition real1.h:55
const function_symbol & reduce_fraction_where()
Constructor for function symbol @redfracwhr.
Definition real1.h:1720
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition real1.h:1112
implementation_map real_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for real_.
Definition real1.h:1927
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
Definition real1.h:1282
bool is_ceil_function_symbol(const atermpp::aterm &e)
Recogniser for function ceil.
Definition real1.h:1542
data_expression real_(const std::string &numerator, const std::string &denominator)
Constructs expression of type Real from two number strings.
application real2int(const data_expression &arg0)
Application of function symbol Real2Int.
Definition real1.h:502
const core::identifier_string & pred_name()
Generate identifier pred.
Definition real1.h:965
const function_symbol & nat2real()
Constructor for function symbol Nat2Real.
Definition real1.h:230
const core::identifier_string & minimum_name()
Generate identifier min.
Definition real1.h:639
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
Definition real1.h:1950
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
Definition real1.h:957
application pos2real(const data_expression &arg0)
Application of function symbol Pos2Real.
Definition real1.h:192
void make_round(data_expression &result, const data_expression &arg0)
Make an application of function symbol round.
Definition real1.h:1628
bool is_pos2real_function_symbol(const atermpp::aterm &e)
Recogniser for function Pos2Real.
Definition real1.h:178
function_symbol_vector real_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for real_.
Definition real1.h:1888
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
Definition real1.h:1974
const core::identifier_string & plus_name()
Generate identifier +.
Definition real1.h:1048
function_symbol abs(const sort_expression &s0)
Definition real1.h:732
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
Definition real1.h:1938
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
Definition real1.h:1303
void make_ceil(data_expression &result, const data_expression &arg0)
Make an application of function symbol ceil.
Definition real1.h:1566
const core::identifier_string & reduce_fraction_name()
Generate identifier @redfrac.
Definition real1.h:1646
function_symbol negate(const sort_expression &s0)
Definition real1.h:807
application minus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
Definition real1.h:1197
application abs(const data_expression &arg0)
Application of function symbol abs.
Definition real1.h:771
bool is_real2pos_application(const atermpp::aterm &e)
Recogniser for application of Real2Pos.
Definition real1.h:398
bool is_reduce_fraction_application(const atermpp::aterm &e)
Recogniser for application of @redfrac.
Definition real1.h:1702
bool is_int2real_function_symbol(const atermpp::aterm &e)
Recogniser for function Int2Real.
Definition real1.h:302
bool is_negate_application(const atermpp::aterm &e)
Recogniser for application of -.
Definition real1.h:874
bool is_reduce_fraction_helper_function_symbol(const atermpp::aterm &e)
Recogniser for function @redfrachlp.
Definition real1.h:1796
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
Definition real1.h:716
bool is_minus_application(const atermpp::aterm &e)
Recogniser for application of -.
Definition real1.h:1218
const core::identifier_string & pos2real_name()
Generate identifier Pos2Real.
Definition real1.h:158
bool is_round_application(const atermpp::aterm &e)
Recogniser for application of round.
Definition real1.h:1638
application reduce_fraction(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @redfrac.
Definition real1.h:1681
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
Definition real1.h:1998
const core::identifier_string & exp_name()
Generate identifier exp.
Definition real1.h:1311
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
Definition real1.h:610
bool is_real2nat_function_symbol(const atermpp::aterm &e)
Recogniser for function Real2Nat.
Definition real1.h:426
const core::identifier_string & real2nat_name()
Generate identifier Real2Nat.
Definition real1.h:406
const core::identifier_string & real2int_name()
Generate identifier Real2Int.
Definition real1.h:468
const function_symbol & int2real()
Constructor for function symbol Int2Real.
Definition real1.h:292
bool is_pred_function_symbol(const atermpp::aterm &e)
Recogniser for function pred.
Definition real1.h:1005
const core::identifier_string & nat2real_name()
Generate identifier Nat2Real.
Definition real1.h:220
function_symbol exp(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:1319
application real2pos(const data_expression &arg0)
Application of function symbol Real2Pos.
Definition real1.h:378
void make_pred(data_expression &result, const data_expression &arg0)
Make an application of function symbol pred.
Definition real1.h:1030
bool is_real2nat_application(const atermpp::aterm &e)
Recogniser for application of Real2Nat.
Definition real1.h:460
bool is_pos2real_application(const atermpp::aterm &e)
Recogniser for application of Pos2Real.
Definition real1.h:212
application floor(const data_expression &arg0)
Application of function symbol floor.
Definition real1.h:1494
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
Definition real1.h:695
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
Definition real1.h:1123
bool is_reduce_fraction_helper_application(const atermpp::aterm &e)
Recogniser for application of @redfrachlp.
Definition real1.h:1832
void make_floor(data_expression &result, const data_expression &arg0)
Make an application of function symbol floor.
Definition real1.h:1504
const function_symbol & real2pos()
Constructor for function symbol Real2Pos.
Definition real1.h:354
implementation_map real_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
Definition real1.h:85
function_symbol maximum(const sort_expression &s0, const sort_expression &s1)
Definition real1.h:538
function_symbol_vector real_generate_functions_code()
Give all system defined mappings for real_.
Definition real1.h:1839
void make_reduce_fraction_where(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @redfracwhr.
Definition real1.h:1758
function_symbol_vector real_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for real_.
Definition real1.h:1875
const core::identifier_string & real2pos_name()
Generate identifier Real2Pos.
Definition real1.h:344
data_expression real_(const std::string &n)
Constructs expression of type Real from a string.
void make_real2pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol Real2Pos.
Definition real1.h:388
application round(const data_expression &arg0)
Application of function symbol round.
Definition real1.h:1618
bool is_exp_function_symbol(const atermpp::aterm &e)
Recogniser for function exp.
Definition real1.h:1351
application pred(const data_expression &arg0)
Application of function symbol pred.
Definition real1.h:1020
void make_creal(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @cReal.
Definition real1.h:140
application ceil(const data_expression &arg0)
Application of function symbol ceil.
Definition real1.h:1556
bool is_reduce_fraction_where_function_symbol(const atermpp::aterm &e)
Recogniser for function @redfracwhr.
Definition real1.h:1730
bool is_nat2real_function_symbol(const atermpp::aterm &e)
Recogniser for function Nat2Real.
Definition real1.h:240
bool is_nat2real_application(const atermpp::aterm &e)
Recogniser for application of Nat2Real.
Definition real1.h:274
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
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
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
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 make_set_comprehension(atermpp::aterm &result, ARGUMENTS... arguments)
void swap(fset_container &t1, fset_container &t2) noexcept
\brief swap overload
void make_data_expression(data_expression &result)
bool is_convertible(const sort_expression &s1, const sort_expression &s2)
Returns true if and only if s1 == s2, or if s1 is a less specific numeric type than s2.
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:339
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:319
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.
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)
variable_list free_variables(const data_expression &x)
Definition data.cpp:194
function_symbol less_equal(const sort_expression &s)
Constructor for function symbol <=.
Definition standard.h:273
void make_bag_comprehension(atermpp::aterm &result, ARGUMENTS... arguments)
void swap(exists &t1, exists &t2) noexcept
\brief swap overload
Definition exists.h:82
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
data_expression number(const sort_expression &s, const std::string &n)
Construct numeric expression from a string representing a number in decimal notation.
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:384
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:159
bool is_equal_to_function_symbol(const DataExpression &e)
Recogniser for function ==.
Definition standard.h:131
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)
void swap(structured_sort &t1, structured_sort &t2) noexcept
\brief swap overload
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:228
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:188
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:236
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:291
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:376
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:254
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
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:177
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:215
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:401
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
std::ostream & operator<<(std::ostream &out, const exists &x)
Definition exists.h:76
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 lambda &x)
Definition lambda.h:89
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:168
void swap(lambda &t1, lambda &t2) noexcept
\brief swap overload
Definition lambda.h:95
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
void make_lambda(atermpp::aterm &result, ARGUMENTS... arguments)
Definition lambda.h:74
function_symbol greater_equal(const sort_expression &s)
Constructor for function symbol >=.
Definition standard.h:347
std::ostream & operator<<(std::ostream &out, const structured_sort &x)
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)
void swap(bag_comprehension &t1, bag_comprehension &t2) noexcept
\brief swap overload
bool is_system_defined(const sort_expression &s)
Returns true iff the expression represents a standard sort.
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.
void swap(set_comprehension &t1, set_comprehension &t2) noexcept
\brief swap overload
bool is_fset_container(const atermpp::aterm &x)
bool is_less_function_symbol(const DataExpression &e)
Recogniser for function <.
Definition standard.h:245
std::ostream & operator<<(std::ostream &out, const data_equation &x)
std::ostream & operator<<(std::ostream &out, const bag_comprehension &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:205
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:328
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:257
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:365
bool is_less_equal_function_symbol(const DataExpression &e)
Recogniser for function <=.
Definition standard.h:282
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:356
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:122
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:140
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
void make_exists(atermpp::aterm &result, ARGUMENTS... arguments)
Definition exists.h:61
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:265
void make_structured_sort(atermpp::aterm &t, const ARGUMENTS &... args)
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::ostream & operator<<(std::ostream &out, const set_comprehension &x)
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:302
bool is_bag_comprehension_binder(const atermpp::aterm &x)
function_symbol if_(const sort_expression &s)
Constructor for function symbol if.
Definition standard.h:196
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:151
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:310
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 SortStruct
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