|
mCRL2
|
Rewriter interface class. More...
#include <rewrite.h>
Public Types | |
| using | substitution_type = mutable_indexed_substitution<> |
Public Member Functions | |
| Rewriter (const data_specification &data_spec, const used_data_equation_selector &eq_selector) | |
| Constructor. Do not use directly; use createRewriter() function instead. | |
| virtual | ~Rewriter ()=default |
| Destructor. | |
| data::enumerator_identifier_generator & | identifier_generator () |
| The fresh name generator of the rewriter. | |
| virtual rewrite_strategy | getStrategy ()=0 |
| Get rewriter strategy that is used. | |
| virtual data_expression | rewrite (const data_expression &term, substitution_type &sigma)=0 |
| Rewrite an mCRL2 data term. | |
| virtual void | rewrite (data_expression &result, const data_expression &term, substitution_type &sigma)=0 |
| Rewrite an mCRL2 data term. | |
| data_expression | operator() (const data_expression &term, substitution_type &sigma) |
| Provide the rewriter with a () operator, such that it can also rewrite terms using this operator. | |
| virtual std::shared_ptr< detail::Rewriter > | clone ()=0 |
| Clone a rewriter. | |
| void | existential_quantifier_enumeration (data_expression &result, const abstraction &t, substitution_type &sigma, bool t1_is_normal_form=false) |
| void | existential_quantifier_enumeration (data_expression &result, const variable_list &vl, const data_expression &t1, substitution_type &sigma, bool t1_is_normal_form=false) |
| void | universal_quantifier_enumeration (data_expression &result, const abstraction &t, substitution_type &sigma, bool t1_is_normal_form=false) |
| void | universal_quantifier_enumeration (data_expression &result, const variable_list &vl, const data_expression &t1, substitution_type &sigma, bool t1_is_normal_form=false) |
| void | rewrite_where (data_expression &result, const where_clause &term, substitution_type &sigma) |
| void | rewrite_single_lambda (data_expression &result, const variable_list &vl, const data_expression &body, substitution_type &sigma, bool body_in_normal_form) |
| void | rewrite_lambda_application (data_expression &result, const data_expression &t, substitution_type &sigma, bool arguments_are_in_normal_form=false) |
| Rewrite t, assuming that the headsymbol of t, which can be nested, is a lambda term. | |
| void | rewrite_lambda_application (data_expression &result, const abstraction &lambda_term, const application &t, substitution_type &sigma, bool arguments_are_in_normal_form=false) |
| virtual void | thread_initialise () |
Public Attributes | |
| used_data_equation_selector | data_equation_selector |
Protected Member Functions | |
| Rewriter & | operator= (const Rewriter &other)=default |
| The copy assignment operator is protected. Public copying is not allowed. | |
| Rewriter (const Rewriter &other)=default | |
| The copy constructor operator is protected. Public copying is not allowed. | |
| void | quantifier_enumeration (data_expression &result, const variable_list &vl, const data_expression &t1, bool t1_is_normal_form, substitution_type &sigma, const binder_type &binder, data_expression(*lazy_op)(const data_expression &, const data_expression &), const data_expression &identity_element, const data_expression &absorbing_element) |
Protected Attributes | |
| enumerator_identifier_generator | m_generator |
| mcrl2::data::data_specification | m_data_specification_for_enumeration |
Rewriter interface class.
This is the interface class for the rewriters. To create a specific rewriter, use createRewriter.
Simple use of the rewriter would be as follows (with t a term in the mCRL2 internal format):
|
protecteddefault |
The copy constructor operator is protected. Public copying is not allowed.
|
inline |
Constructor. Do not use directly; use createRewriter() function instead.
|
virtualdefault |
Destructor.
|
pure virtual |
Clone a rewriter.
Implemented in mcrl2::data::detail::RewriterJitty, and mcrl2::data::detail::RewriterProver.
| void mcrl2::data::detail::Rewriter::existential_quantifier_enumeration | ( | data_expression & | result, |
| const abstraction & | t, | ||
| substitution_type & | sigma, | ||
| bool | t1_is_normal_form = false |
||
| ) |
Definition at line 319 of file rewrite.cpp.
| void mcrl2::data::detail::Rewriter::existential_quantifier_enumeration | ( | data_expression & | result, |
| const variable_list & | vl, | ||
| const data_expression & | t1, | ||
| substitution_type & | sigma, | ||
| bool | t1_is_normal_form = false |
||
| ) |
Definition at line 336 of file rewrite.cpp.
|
pure virtual |
Get rewriter strategy that is used.
Implemented in mcrl2::data::detail::RewriterJitty, and mcrl2::data::detail::RewriterProver.
|
inline |
|
inline |
The copy assignment operator is protected. Public copying is not allowed.
|
protected |
Definition at line 373 of file rewrite.cpp.
|
pure virtual |
Rewrite an mCRL2 data term.
| Term | The term to be rewritten. This term should be a data_term |
Implemented in mcrl2::data::detail::RewriterProver, and mcrl2::data::detail::RewriterJitty.
|
pure virtual |
Rewrite an mCRL2 data term.
| Term | The term to be rewritten. This term should be a data_term |
Implemented in mcrl2::data::detail::RewriterProver, and mcrl2::data::detail::RewriterJitty.
| void mcrl2::data::detail::Rewriter::rewrite_lambda_application | ( | data_expression & | result, |
| const abstraction & | lambda_term, | ||
| const application & | t, | ||
| substitution_type & | sigma, | ||
| bool | arguments_are_in_normal_form = false |
||
| ) |
Definition at line 230 of file rewrite.cpp.
| void mcrl2::data::detail::Rewriter::rewrite_lambda_application | ( | data_expression & | result, |
| const data_expression & | t, | ||
| substitution_type & | sigma, | ||
| bool | arguments_are_in_normal_form = false |
||
| ) |
Rewrite t, assuming that the headsymbol of t, which can be nested, is a lambda term.
Definition at line 205 of file rewrite.cpp.
| void mcrl2::data::detail::Rewriter::rewrite_single_lambda | ( | data_expression & | result, |
| const variable_list & | vl, | ||
| const data_expression & | body, | ||
| substitution_type & | sigma, | ||
| bool | body_in_normal_form | ||
| ) |
Definition at line 100 of file rewrite.cpp.
| void mcrl2::data::detail::Rewriter::rewrite_where | ( | data_expression & | result, |
| const where_clause & | term, | ||
| substitution_type & | sigma | ||
| ) |
Definition at line 61 of file rewrite.cpp.
|
inlinevirtual |
Reimplemented in mcrl2::data::detail::RewriterJitty, and mcrl2::data::detail::RewriterProver.
| void mcrl2::data::detail::Rewriter::universal_quantifier_enumeration | ( | data_expression & | result, |
| const abstraction & | t, | ||
| substitution_type & | sigma, | ||
| bool | t1_is_normal_form = false |
||
| ) |
Definition at line 348 of file rewrite.cpp.
| void mcrl2::data::detail::Rewriter::universal_quantifier_enumeration | ( | data_expression & | result, |
| const variable_list & | vl, | ||
| const data_expression & | t1, | ||
| substitution_type & | sigma, | ||
| bool | t1_is_normal_form = false |
||
| ) |
Definition at line 362 of file rewrite.cpp.
| used_data_equation_selector mcrl2::data::detail::Rewriter::data_equation_selector |
|
protected |
|
protected |