|
mCRL2
|
Namespaces | |
| namespace | prover |
Classes | |
| struct | add_capture_avoiding_replacement |
| struct | add_capture_avoiding_replacement_with_an_identifier_generator |
| struct | add_data_rewriter |
| Applies a data rewriter to data expressions appearing in a term. It works both with and without a substitution. More... | |
| struct | anonymize_builder |
| struct | anonymize_builder_instance |
| struct | apply_rewriter_builder |
| class | BDD2Dot |
| The class BDD2Dot offers the ability to write binary decision diagrams to dot files. The method BDD2Dot::output_bdd receives a binary decision diagram as parameter a_bdd and writes it to a file in dot format with the name passed as parameter a_file_name. More... | |
| class | BDD_Info |
| The class BDD_Info provides information about the structure of binary decision diagrams. More... | |
| class | BDD_Path_Eliminator |
| Base class for eliminating inconsistent paths from BDDs. More... | |
| class | BDD_Prover |
| class | BDD_Simplifier |
| A base class for simplifying binary decision diagrams. More... | |
| class | build_pars |
| struct | capture_avoiding_substitution_updater |
| struct | compare_sort |
| Tests if a term is a sort, and if it is equal to s. More... | |
| struct | compare_term |
| struct | compare_variable |
| Function object that determines if a term is equal to a given data variable. More... | |
| struct | data_expression_actions |
| class | data_property_map |
Base class for storing properties of mCRL2 types. Properties are (key, value) pairs stored as strings in KEY = VALUE format. The data_property_map has some predefined functions for types in the Data Library. The optional type argument is used by derived classes. The type represents the name of a derived class as per CRTP. More... | |
| struct | data_rewriter_builder |
| struct | data_specification_actions |
| class | dependencies_rewrite_rule_pair |
| struct | double_variable_traverser |
| struct | elements_per_domain |
| struct | enumerate_quantifiers_builder |
| struct | enumerator_iteration_limit |
| struct | enumerator_replace_builder |
| struct | equality_set_with_top |
| struct | find_equalities_expression |
| struct | find_equalities_traverser |
| struct | find_equalities_traverser_inst |
| class | Formula_Checker |
| The class formula checker takes a data specification in mCRL2 format and a list of expressions. More... | |
| struct | function_symbol_has_name |
| struct | if_rewrite_builder |
| struct | if_rewrite_with_rewriter_builder |
| class | Induction |
| The class Induction generates statements corresponding to. More... | |
| class | inequality_consistency_cache |
| class | inequality_inconsistency_cache |
| class | inequality_inconsistency_cache_base |
| class | influence_graph |
| class | Info |
| Base class for classes that provide information about the structure of. More... | |
| struct | is_a_variable |
| struct | is_untyped_traverser |
| class | jitty_argument_rewriter |
| struct | jitty_assignments_for_a_rewrite_rule |
| struct | jitty_variable_assignment_for_a_rewrite_rule |
| class | lhs_t |
| class | Manipulator |
| Base class for classes that provide functionality to modify or create terms. More... | |
| class | match_tree |
| class | match_tree_A |
| class | match_tree_C |
| class | match_tree_CRe |
| class | match_tree_D |
| class | match_tree_F |
| class | match_tree_M |
| class | match_tree_MachineNumber |
| class | match_tree_Me |
| class | match_tree_N |
| class | match_tree_R |
| class | match_tree_Re |
| class | match_tree_S |
| class | match_tree_X |
| class | nfs_array |
| struct | normalize_and_or_builder |
| struct | normalize_equality_builder |
| struct | normalize_sorts_function |
| struct | normalizer |
| struct | one_point_rule_preprocessor |
| class | one_point_rule_rewrite_builder |
| struct | one_point_rule_substitution_algorithm |
| struct | parameter |
| class | parser |
| class | parvalues_algorithm |
| Algorithm class that can be used to apply the lps_explore_domains algorithm. More... | |
| class | prepend_iterator_tag_convertor |
| class | prepend_iterator_tag_convertor< std::input_iterator_tag > |
| struct | printer |
| struct | quantifiers_inside_builder |
| struct | quantifiers_inside_exists_builder |
| struct | quantifiers_inside_forall_builder |
| struct | recalculate_term_as_stack_is_too_small |
| struct | replace_capture_avoiding_variables_builder |
| struct | replace_capture_avoiding_variables_builder_with_an_identifier_generator |
| struct | replace_constants_by_variables_builder |
| Replace each constant data application c by a fresh variable v, and add extend the substitution sigma with the assignment v := r(c). This can be used in rewriting, to avoid that c is rewritten by the rewriter multiple times. More... | |
| struct | rewrite_data_expressions_builder |
| struct | rewrite_data_expressions_with_substitution_builder |
| class | rewrite_stack |
| struct | rewrite_statistics |
| class | Rewriter |
| Rewriter interface class. More... | |
| struct | rewriter_wrapper |
| class | RewriterJitty |
| class | RewriterProver |
| struct | rule |
| A rule describes a partially pattern-matched rewrite rule. More... | |
| class | simplify_rewrite_builder |
| class | skip_function_application_to_head |
| class | skip_function_application_to_head_assignment |
| class | SMT_LIB_Solver |
| class | SMT_Solver |
| struct | sort_expression_actions |
| struct | sort_has_name |
| struct | sort_of_expression |
| Function object that returns the sort of a data expression. More... | |
| class | strategy |
| A strategy is a list of rules and the number of variables that occur in it. More... | |
| class | strategy_rule |
| Is either a rewrite rule to be matched or an index that should be rewritten. More... | |
| class | substitution_updater_with_an_identifier_generator |
| class | term_appl_prepend_iterator |
| class | translate_user_notation_builder |
| struct | translate_user_notation_function |
| class | variable_context |
| struct | variable_name |
| Function object that returns the name of a data variable. More... | |
| class | variable_or_number |
| This is a list where variables and aterm ints can be stored. More... | |
| class | variable_with_a_rational_factor |
Typedefs | |
| using | variable_or_number_list = atermpp::term_list< variable_or_number > |
| using | match_tree_list = atermpp::term_list< match_tree > |
| using | match_tree_vector = std::vector< match_tree > |
| using | match_tree_list_list = atermpp::term_list< match_tree_list > |
| using | match_tree_list_list_list = atermpp::term_list< match_tree_list_list > |
| using | sort_of_variable = sort_of_expression< variable > |
| Function object that returns the sort of a data variable. | |
| using | map_based_lhs_t = std::map< variable, data_expression > |
Enumerations | |
| enum | Answer { answer_yes , answer_no , answer_undefined } |
| A prover that uses EQ-BDDs. More... | |
| enum | Compare_Result { compare_result_smaller , compare_result_equal , compare_result_bigger } |
| enum | smt_solver_type { solver_type_cvc , solver_type_z3 } |
| The enumeration type smt_solver_type enumerates all available SMT solvers. More... | |
| enum | comparison_t { less , less_eq , equal } |
| enum | node_type { true_end_node , false_end_node , intermediate_node } |
Functions | |
| sort_expression | parse_sort_expression (const std::string &text) |
| variable_list | parse_variables (const std::string &text) |
| data_expression | parse_data_expression (const std::string &text) |
| data_specification | parse_data_specification_new (const std::string &text) |
| variable_list | parse_variable_declaration_list (const std::string &text) |
| bool | is_one (const data_expression &x) |
| bool | is_numeric_cast (const data_expression &x) |
| bool | look_through_numeric_casts (const data_expression &x, std::function< bool(const data_expression &)> f) |
| bool | head_matches_undefined_symbol (const data_expression &x, const core::identifier_string &s) |
| bool | is_plus (const application &x) |
| bool | is_minus (const application &x) |
| bool | is_mod (const application &x) |
| bool | is_div (const application &x) |
| bool | is_divmod (const application &x) |
| bool | is_divides (const application &x) |
| bool | is_implies (const application &x) |
| bool | is_set_union (const application &x) |
| bool | is_set_difference (const application &x) |
| bool | is_bag_join (const application &x) |
| bool | is_bag_difference (const application &x) |
| bool | is_and (const application &x) |
| bool | is_or (const application &x) |
| bool | is_equal_to (const application &x) |
| bool | is_not_equal_to (const application &x) |
| bool | is_less (const application &x) |
| bool | is_less_equal (const application &x) |
| bool | is_greater (const application &x) |
| bool | is_greater_equal (const application &x) |
| bool | is_in (const application &x) |
| bool | is_times (const application &x) |
| bool | is_element_at (const application &x) |
| bool | is_set_intersection (const application &x) |
| bool | is_bag_intersection (const application &x) |
| bool | is_concat (const application &x) |
| bool | is_cons_list (data_expression x) |
| bool | is_snoc_list (data_expression x) |
| bool | is_cons (const application &x) |
| bool | is_snoc (const application &x) |
| data_equation | translate_user_notation_data_equation (const data_equation &x) |
| atermpp::aterm | data_specification_to_aterm (const data_specification &s) |
| template<typename Container > | |
| data::sort_expression_list | parameter_sorts (const Container ¶meters) |
| Returns the sorts of a sequence of parameters. | |
| template<class VariableContainer > | |
| bool | unique_names (const VariableContainer &variables) |
| Returns true if the names of the given variables are unique. | |
| bool | check_assignment_variables (assignment_list const &assignments, variable_list const &variables) |
| Returns true if the left hand sides of assignments are contained in variables. | |
| template<typename SortContainer > | |
| bool | check_sort (const sort_expression &s, const SortContainer &sorts) |
| Returns true if the domain sorts and the codomain sort of the given sort s are contained in sorts. | |
| template<typename Iterator , typename SortContainer > | |
| bool | check_sorts (Iterator first, Iterator last, const SortContainer &sorts) |
| Returns true if the domain sorts and the range sort of the sorts in the sequence [first, last) are contained in sorts. | |
| template<typename VariableContainer , typename SortContainer > | |
| bool | check_variable_sorts (const VariableContainer &variables, const SortContainer &sorts) |
| Returns true if the domain sorts and the range sort of the given variables are contained in sorts. | |
| bool | check_variable_names (variable_list const &variables, const std::set< core::identifier_string > &names) |
| Returns true if names of the given variables are not contained in names. | |
| template<typename Container , typename SortContainer > | |
| bool | check_data_spec_sorts (const Container &container, const SortContainer &sorts) |
| Returns true if the domain sorts and range sort of the given functions are contained in sorts. | |
| atermpp::aterm | remove_index_impl (const atermpp::aterm &x) |
| atermpp::aterm | add_index_impl (const atermpp::aterm &x) |
| atermpp::aterm | add_index (const atermpp::aterm &x) |
| atermpp::aterm | remove_index (const atermpp::aterm &x) |
| std::set< variable > | bound_variables_in_substitution (const jitty_assignments_for_a_rewrite_rule &assignments) |
| static bool | match_jitty (const data_expression &t, const data_expression &p, jitty_assignments_for_a_rewrite_rule &assignments, const bool term_context_guarantees_normal_form) |
| data_expression | remove_normal_form_function (const data_expression &t) |
| removes auxiliary expressions this_term_is_in_normal_form from data_expressions that are being rewritten. | |
| variable_list | get_free_vars (const data_expression &a) |
| sort_expression | residual_sort (const sort_expression &s, std::size_t no_of_initial_arguments) |
| const data_expression * | get_argument_of_higher_order_term_helper (const application &t, std::size_t &i) |
| const data_expression & | get_argument_of_higher_order_term (const application &t, std::size_t i) |
| std::size_t | recursive_number_of_args (const data_expression &t) |
| const data_expression & | get_nested_head_helper (const application &t) |
| const data_expression & | get_nested_head (const data_expression &t) |
| data_expression | replace_nested_head (const data_expression &t, const data_expression &head) |
| template<class ARGUMENT_REWRITER > | |
| void | rewrite_all_arguments (data_expression &result, const application &t, const ARGUMENT_REWRITER rewriter, const bool skip_rewriting_head=false) |
| std::shared_ptr< detail::Rewriter > | createRewriter (const data_specification &DataSpec, const used_data_equation_selector &equations_selector, rewrite_strategy Strategy=jitty) |
| Create a rewriter. | |
| void | CheckRewriteRule (const data_equation &data_eqn) |
| Check that an mCRL2 data equation is a valid rewrite rule. If not, an runtime_error is thrown indicating the problem. | |
| bool | isValidRewriteRule (const data_equation &data_eqn) |
| Check whether or not an mCRL2 data equation is a valid rewrite rule. | |
| std::size_t | getArity (const data::function_symbol &op) |
| std::size_t | get_direct_arity (const data::function_symbol &op) |
| std::ostream & | operator<< (std::ostream &s, const match_tree &t) |
| static bool | occur_check (const variable &v, const atermpp::aterm &e) |
| static void | check_vars (const data_expression &expr, const std::set< variable > &vars, std::set< variable > &used_vars) |
| static void | check_vars (application::const_iterator begin, const application::const_iterator &end, const std::set< variable > &vars, std::set< variable > &used_vars) |
| static void | checkPattern (const data_expression &p) |
| static void | checkPattern (application::const_iterator begin, const application::const_iterator &end) |
| void | set_enumerator_iteration_limit (std::size_t size) |
| std::size_t | get_enumerator_iteration_limit () |
| data_expression | make_set_ (std::size_t function_index, const sort_expression &element_sort, const data_expression_vector &set_elements) |
| data_expression | make_if_expression_ (std::size_t &function_index, const std::size_t argument_index, const std::vector< data_expression_vector > &data_domain_expressions, const data_expression_vector &codomain_expressions, const variable_vector ¶meters) |
| template<class Rewriter , IsSubstitution MutableSubstitution> | |
| bool | compute_finite_set_elements (const container_sort &sort, const data_specification &dataspec, Rewriter datar, MutableSubstitution &sigma, data_expression_vector &result, enumerator_identifier_generator &id_generator) |
| Computes the elements of a finite set sort, and puts them in result. If there are too many elements, false is returned. | |
| template<class Rewriter > | |
| bool | compute_finite_function_sorts (const function_sort &sort, enumerator_identifier_generator &id_generator, const data::data_specification &dataspec, Rewriter datar, data_expression_vector &result, variable_list &function_parameter_list) |
| Computes the elements of a finite function sort, and puts them in result. If there are too many elements, false is returned. | |
| template<typename Rewriter > | |
| bool | is_enumerable (const data_specification &dataspec, const Rewriter &rewr, const sort_expression &sort, std::list< sort_expression > &parents) |
| strategy | create_strategy (data_equation_list rules) |
| Creates a strategy for given set of rewrite rules with head symbol f. | |
| static bool | includes (const std::set< variable > &s1, const std::set< variable > &s2, variable &culprit) |
| static bool | IsPos (const core::identifier_string &Number) |
| static bool | IsNat (const core::identifier_string &Number) |
| static sort_expression_list | GetVarTypes (variable_list VarDecls) |
| static bool | HasUnknown (const sort_expression &Type) |
| static bool | IsNumericType (const sort_expression &Type) |
| static sort_expression | MinType (const sort_expression_list &TypeList) |
| static sort_expression | replace_possible_sorts (const sort_expression &Type) |
| template<class S > | |
| atermpp::term_list< S > | insert_sort_unique (const atermpp::term_list< S > &list, const S &el) |
| bool | contains_untyped_sort (const sort_expression &s) |
| const data_expression & | evaluate_lambda_data_expression (const data_expression &t) |
| template<class TERM > requires (std::is_invocable_r_v<void, TERM, data_expression&>) | |
| data_expression | evaluate_lambda_data_expression (const TERM &t) |
| template<class TERM > requires (std::is_invocable_r_v<const data_expression, TERM, void>) | |
| data_expression | evaluate_lambda_data_expression (const TERM &t) |
| template<class HEAD , class CONTAINER > | |
| bool | check_whether_sorts_match (const HEAD &head_lambda, const CONTAINER &l) |
| data_expression_list | get_arguments () |
| template<class HEAD , class... ARGUMENTS> | |
| data_expression_list | get_arguments (const HEAD &h, const ARGUMENTS &... args) |
| data_expression | create_finite_set (const data_expression &x) |
| Create the finite set { x }, with x a data expression. | |
| data_expression | create_set_comprehension (const variable &x, const data_expression &phi) |
| Create the set { x | phi }, with phi a predicate that may depend on the variable x. | |
| data_expression | create_set_in (const data_expression &x, const data_expression &X) |
| Create the predicate 'x in X', with X a set. | |
| sort_expression | get_set_sort (const container_sort &x) |
| Returns the sort s of Set(s). | |
| template<typename PropertyMap > | |
| bool | compare_property_maps (const std::string &message, const PropertyMap &map1, const std::string &expected_result) |
| variable_list | set_intersection (const variable_list &x, const variable_list &y) |
| Returns the intersection of two unordered sets, that are stored in ATerm lists. | |
| variable_list | set_difference (const variable_list &x, const variable_list &y) |
| Returns the difference of two unordered sets, that are stored in aterm lists. | |
| bool | equal_sorts (const data::variable_list &v, const data::data_expression_list &w, const data::data_specification &data_spec) |
| Checks if the sorts of the variables/expressions in both lists are equal. | |
| std::set< core::identifier_string > | variable_names (const std::set< data::variable > &variables) |
| Returns the names of a set of data variables. | |
| std::set< std::string > | variable_name_strings (const std::set< data::variable > &variables) |
| Returns the names of a set of data variables as a set of strings. | |
| std::set< std::string > | variable_name_strings (const std::set< data::variable > &variables1, const std::set< data::variable > &variables2) |
| Returns the names of a set of data variables. | |
| bool | is_untyped (const data_expression &x) |
| data_expression | negate_inequality (const data_expression &e) |
| bool | is_inequality (const data_expression &e) |
| Determine whether a data expression is an inequality. | |
| const data_expression & | condition_part (const data_expression &e) |
| const data_expression & | then_part (const data_expression &e) |
| const data_expression & | else_part (const data_expression &e) |
| static bool | split_condition_aux (const data_expression &e, std::vector< data_expression_list > &real_conditions, std::vector< data_expression_list > &non_real_conditions, const bool negate=false) |
| Splits a condition in expressions ranging over reals and the others. | |
| void | split_condition (const data_expression &e, std::vector< data_expression_list > &real_conditions, std::vector< data_expression > &non_real_conditions) |
| This function first splits the given condition e into real conditions and non real conditions. \detail This function first uses split_condition_aux to split the condition e. Then. | |
| template<IsSubstitution MutableSubstitution> | |
| void | parse_substitution (std::string text, MutableSubstitution &sigma, const data_specification &data_spec=data::data_specification()) |
| Parses a string of the form "b: Bool := true, n: Nat := 0", and adds the substitutions to the substition function sigma. If the string is surrounded by brackets (e.g. "[b: Bool := true, n: Nat := 0]"), these are ignored. | |
| template<class VariableContainer > | |
| std::string | ppsort (const VariableContainer &s) |
| std::ostream & | operator<< (std::ostream &out, const parameter &x) |
| void | print_parse_check (const sort_expression &x, const data_specification &dataspec=data_specification()) |
| void | print_parse_check (const data_expression &x, const data_specification &dataspec=data_specification()) |
| data::data_expression | bool_to_numeric (const data::data_expression &e, const data::sort_expression &s) |
| data_expression | reconstruct_pos_mult (const data_expression &x, const std::vector< char > &result) |
| smt_solver_type | parse_solver_type (const std::string &s) |
| standard conversion from string to solver type | |
| std::istream & | operator>> (std::istream &is, smt_solver_type &s) |
| standard conversion from stream to solver type | |
| std::string | print_solver_type (const smt_solver_type s) |
| standard conversion from solver type to string | |
| std::ostream & | operator<< (std::ostream &os, smt_solver_type s) |
| standard conversion from solvert type to stream | |
| std::string | description (const smt_solver_type s) |
| description of solver type | |
| std::size_t | rewrite_count () |
| void | display_rewrite_statistics () |
| void | increment_rewrite_count () |
| static std::vector< data::rewrite_strategy > | initialise_test_rewrite_strategies (const bool with_prover) |
| Static initialisation of rewrite strategies used for testing. | |
| const std::vector< data::rewrite_strategy > & | get_test_rewrite_strategies (const bool with_prover) |
| Rewrite strategies that should be tested. | |
| template<typename Iterator > | |
| bool | sequence_contains_duplicates (Iterator first, Iterator last) |
| Returns true if the sequence [first, last) contains duplicates. | |
| template<typename Iterator1 , typename Iterator2 > | |
| bool | sequences_do_overlap (Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2) |
| Returns true if the two sequences [first1, last1) and [first2, last2) have a non empty intersection. | |
| template<typename Iterator , typename T > | |
| bool | sequence_is_subset_of_set (Iterator first, Iterator last, const std::set< T > &s) |
| Returns true if all elements of the range [first, last) are element of the set s. | |
| template<class Container > | |
| std::set< typename Container::value_type > | make_set (const Container &c) |
| Makes a set of the given container. | |
| template<typename Sequence > | |
| bool | sequence_empty_intersection (Sequence s1, Sequence s2) |
| Determines if the unordered sequences s1 and s2 have an empty intersection. | |
| template<typename FILTER > | |
| void | split_finite_variables (data::variable_list variables, const data::data_specification &data, data::variable_list &finite_variables, data::variable_list &infinite_variables, data::variable_list &unused, const FILTER filter) |
| Splits the variables in a subset with finite sort, with infinite sort and those that are not used according to a filter. | |
| template<typename Rewriter , typename FILTER > | |
| void | split_enumerable_variables (data::variable_list variables, const data::data_specification &data, const Rewriter &rewr, data::variable_list &enumerable_variables, data::variable_list &non_enumerable_variables, data::variable_list &unused, const FILTER filter) |
| Splits a list of variables in those that are enumerable, non enumerable and not used, according to a filter. | |
| template<typename T > requires (std::is_base_of_v<atermpp::aterm, T>) | |
| T | normalize_and_or (const T &x) |
| template<typename T > requires (!std::is_base_of_v<atermpp::aterm, T>) | |
| void | normalize_and_or (T &x) |
| template<typename T > requires (std::is_base_of_v<atermpp::aterm, T>) | |
| T | normalize_equality (const T &x) |
| template<typename T > requires (!std::is_base_of_v<atermpp::aterm, T>) | |
| void | normalize_equality (T &x) |
| template<typename Function > | |
| normalizer< Function > | N (const Function &f) |
| std::string | VARIABLE_SPECIFICATION () |
| template<typename Rewriter1 , typename Rewriter2 > | |
| void | test_rewriters (Rewriter1 R1, Rewriter2 R2, std::string expr1, std::string expr2, const std::string &var_decl=VARIABLE_SPECIFICATION(), const std::string &data_spec="") |
| data_expression | I (const data_expression &x) |
| void | check_duplicate_variable_names (const data::variable_list &x, const std::string &msg) |
| bool | is_pos (const core::identifier_string &Number) |
| bool | is_nat (const core::identifier_string &Number) |
| function_sort | make_function_sort_ (const sort_expression &domain, const sort_expression &codomain) |
| template<typename Function , typename T > | |
| atermpp::term_list< T > | transform_aterm_list (const Function &f, const atermpp::term_list< T > &x) |
| sort_expression | unwind_sort_expression (const sort_expression &x, const alias_vector &aliases) |
| bool | is_numeric_type (const sort_expression &x) |
| std::ostream & | operator<< (std::ostream &out, const find_equalities_expression &x) |
| std::set< data_expression > | split_aggressive (const data_expression &expr, bool outermost_symbol_is_or) |
| Splits a boolean term by rewriting it to the shape p1 || p2 || ... || pn or p1 &&...&& pn and then yield a set of the form { p1, p2, ..., pn } where pi does not have || or && anymore as main function symbol. The second parameter indicates what the outermost symbol is. | |
| std::string | pp (const detail::lhs_t &lhs) |
| detail::comparison_t | negate (const detail::comparison_t t) |
| std::string | pp (const detail::comparison_t t) |
| atermpp::function_symbol | f_variable_with_a_rational_factor () |
| void | set_factor_for_a_variable (detail::map_based_lhs_t &new_lhs, const variable &x, const data_expression &e) |
| lhs_t | set_factor_for_a_variable (const lhs_t &lhs, const variable &x, const data_expression &e) |
| lhs_t | map_to_lhs_type (const map_based_lhs_t &lhs) |
| lhs_t | map_to_lhs_type (const map_based_lhs_t &lhs, const data_expression &factor, const rewriter &r) |
| bool | is_well_formed (const lhs_t &lhs) |
| lhs_t | remove_variable_and_divide (const lhs_t &lhs, const variable &v, const data_expression &f, const rewriter &r) |
| void | emplace_back_if_not_zero (std::vector< detail::variable_with_a_rational_factor > &r, const variable &v, const data_expression &f) |
| template<application Operation> | |
| lhs_t | meta_operation_constant (const lhs_t &argument, const data_expression &v, const rewriter &r) |
| template<class OPERATION > | |
| lhs_t | meta_operation_lhs (const lhs_t &argument1, const lhs_t &argument2, OPERATION operation, const rewriter &r) |
| lhs_t | add (const data_expression &v, const lhs_t &argument, const rewriter &r) |
| lhs_t | subtract (const lhs_t &argument, const data_expression &v, const rewriter &r) |
| lhs_t | multiply (const lhs_t &argument, const data_expression &v, const rewriter &r) |
| lhs_t | divide (const lhs_t &argument, const data_expression &v, const rewriter &r) |
| lhs_t | add (const lhs_t &argument, const lhs_t &e, const rewriter &r) |
| lhs_t | subtract (const lhs_t &argument, const lhs_t &e, const rewriter &r) |
| atermpp::function_symbol | linear_inequality_less () |
| atermpp::function_symbol | linear_inequality_less_equal () |
| atermpp::function_symbol | linear_inequality_equal () |
| template<typename TermTraits > | |
| void | optimized_not (typename TermTraits::term_type &result, const typename TermTraits::term_type &arg, TermTraits) |
| template<typename TermTraits > | |
| void | optimized_and (typename TermTraits::term_type &result, const typename TermTraits::term_type &left, const typename TermTraits::term_type &right, TermTraits) |
| Make a conjunction and optimize it if possible. | |
| template<typename TermTraits > | |
| void | optimized_or (typename TermTraits::term_type &result, const typename TermTraits::term_type &left, const typename TermTraits::term_type &right, TermTraits) |
| Make a disjunction. | |
| template<typename TermTraits > | |
| void | optimized_imp (typename TermTraits::term_type &result, const typename TermTraits::term_type &left, const typename TermTraits::term_type &right, TermTraits t) |
| Make an implication. | |
| template<typename TermTraits > | |
| void | optimized_forall (typename TermTraits::term_type &result, const typename TermTraits::variable_sequence_type &v, const typename TermTraits::term_type &arg, bool remove_variables, bool empty_domain_allowed, TermTraits) |
| Make a universal quantification. | |
| template<typename TermTraits > | |
| void | optimized_exists (typename TermTraits::term_type &result, const typename TermTraits::variable_sequence_type &v, const typename TermTraits::term_type &arg, bool remove_variables, bool empty_domain_allowed, TermTraits) |
| Make an existential quantification. | |
| static data_specification const & | default_specification () |
| template<typename Substitution > | |
| std::ostream & | operator<< (std::ostream &out, const capture_avoiding_substitution_updater< Substitution > &sigma) |
| template<template< class > class Builder, template< template< class > class, class, class > class Binder, class Substitution > | |
| replace_capture_avoiding_variables_builder< Builder, Binder, Substitution > | apply_replace_capture_avoiding_variables_builder (capture_avoiding_substitution_updater< Substitution > &sigma) |
| template<typename Substitution , typename IdentifierGenerator > | |
| data::variable | update_substitution (Substitution &sigma, const data::variable &v, const std::multiset< data::variable > &V, IdentifierGenerator &id_generator) |
| template<typename Substitution , typename IdentifierGenerator , typename VariableContainer > | |
| VariableContainer | update_substitution (Substitution &sigma, const VariableContainer &v, const std::multiset< data::variable > &V, IdentifierGenerator &id_generator) |
| template<template< class > class Builder, template< template< class > class, class, class, class > class Binder, class Substitution , class IdentifierGenerator > | |
| replace_capture_avoiding_variables_builder_with_an_identifier_generator< Builder, Binder, Substitution, IdentifierGenerator > | apply_replace_capture_avoiding_variables_builder_with_an_identifier_generator (Substitution &sigma, IdentifierGenerator &id_generator) |
| template<template< class > class Builder, class Rewriter > | |
| rewrite_data_expressions_builder< Builder, Rewriter > | make_rewrite_data_expressions_builder (Rewriter R) |
| template<template< class > class Builder, class Rewriter , IsSubstitution Substitution> | |
| rewrite_data_expressions_with_substitution_builder< Builder, Rewriter, Substitution > | make_rewrite_data_expressions_with_substitution_builder (Rewriter R, Substitution sigma) |
| template<typename DataRewriter , IsSubstitution SubstitutionFunction> | |
| void | data_rewrite (data_expression &result, const data_expression &x, const DataRewriter &R, SubstitutionFunction &sigma) |
| template<typename DataRewriter > | |
| void | data_rewrite (data_expression &result, const data_expression &x, const DataRewriter &R, no_substitution &) |
| template<template< class, class, class > class Builder, class DataRewriter , IsSubstitution SubstitutionFunction> | |
| apply_rewriter_builder< Builder, DataRewriter, SubstitutionFunction > | make_apply_rewriter_builder (const DataRewriter &datar, SubstitutionFunction &sigma) |
| application | replace_argument (const application &x, std::size_t i, const data_expression &y) |
| data_expression | push_if_outside (const application &x) |
| data_expression | quantifiers_inside (const data_expression &x) |
| data_expression | quantifiers_inside_forall (const std::set< variable > &variables, const data_expression &x) |
| data_expression | quantifiers_inside_exists (const std::set< variable > &variables, const data_expression &x) |
| std::set< variable > | make_variable_set (const variable_list &x) |
| variable_list | make_variable_list (const std::set< variable > &x) |
| template<typename BinaryOperation > | |
| std::tuple< data_expression, data_expression > | compute_Phi_Psi (const std::vector< data_expression > &X, const std::set< variable > &V, BinaryOperation op, data_expression empty_sequence_result) |
| template<typename T > | |
| data_expression | enumerator_replace (const T &x, variable_list::const_iterator variables_begin, variable_list::const_iterator variables_end, data_expression_list::const_iterator expressions_begin) |
| template<typename T > | |
| data_expression | enumerator_replace (const T &x, const variable_list &variables, const data_expression_list &expressions) |
| std::ostream & | operator<< (std::ostream &out, const rule &r) |
| function_symbol | get_top_fs (const data_expression &expr) |
| Get the top level function symbol f if expr is of the shape f or f(t1,...,tn) | |
| data_expression | construct_condition_rhs (const std::vector< rule > &rules, const data_expression &representative) |
| For a list of rules with equal left hand sides of match_criteria and only variables in the right hand sides of match_criteria, construct a right hand side based on the conditions and right hand sides of the rules. | |
| template<typename StructInfo > | |
| data_expression | construct_rhs (StructInfo &ssf, representative_generator &gen, const std::vector< rule > &rules, const sort_expression &sort) |
| For a list of rules with equal left hand sides of match_criteria, construct a right hand side. | |
| using mcrl2::data::detail::map_based_lhs_t = typedef std::map<variable, data_expression> |
Definition at line 171 of file linear_inequalities.h.
| using mcrl2::data::detail::match_tree_list = typedef atermpp::term_list<match_tree> |
Definition at line 574 of file match_tree.h.
| using mcrl2::data::detail::match_tree_list_list = typedef atermpp::term_list<match_tree_list> |
Definition at line 576 of file match_tree.h.
| using mcrl2::data::detail::match_tree_list_list_list = typedef atermpp::term_list<match_tree_list_list> |
Definition at line 577 of file match_tree.h.
| using mcrl2::data::detail::match_tree_vector = typedef std::vector<match_tree> |
Definition at line 575 of file match_tree.h.
| using mcrl2::data::detail::sort_of_variable = typedef sort_of_expression<variable> |
Function object that returns the sort of a data variable.
Definition at line 93 of file data_functional.h.
Definition at line 36 of file match_tree.h.
A prover that uses EQ-BDDs.
\detail A class based on the Prover class that takes an expression of sort Bool in internal mCRL2 format and creates the corresponding EQ-BDD. Using this EQ-BDD, the class can determine if the original formula is a tautology or a contradiction. The term "formula" in the following text denotes arbitrary expressions of sort Bool in the mCRL2 format.
A prover uses a rewriter to rewrite parts of the formulas it manipulates. The constructor BDD_Prover::BDD_Prover initializes the prover's rewriter with the data equations in internal mCRL2 format contained in the LPS passed as parameter a_lps and the rewrite strategy passed as parameter a_rewrite_strategy. The parameter a_rewrite_strategy can be set to either GS_REWR_data::jitty or GS_REWR_data::jittyC. To limit the number of seconds spent on proving a single formula, a time limit can be set. If the time limit is set to 0, no time limit will be enforced. The parameter a_apply_induction indicates whether or induction on lists is applied. The constructor BDD_Prover::BDD_Prover has two additional parameters, a_path_eliminator and a_solver_type. The parameter a_path_eliminator can be used to enable the use of an instance of the class BDD_Path_Eliminator. Instances of this class use an SMT solver to eliminate inconsistent paths from BDDs. The parameter a_solver_type can be used to indicate which SMT solver should be used for this task. Either the SMT solver ario (http://www.eecs.umich.edu/~ario/) or cvc-lite (http://www.cs.nyu.edu/acsys/cvcl/) can be used. To use one of these solvers, the directory containing the corresponding executable must be in the path. If the parameter a_path_eliminator is set to false, the parameter a_solver_type is ignored and no instance of the class BDD_Path_Eliminator is initialized.
The formula to be handled is set using the method Prover::set_formula inherited from the class Prover. An entity of the class BDD_Prover uses binary decision diagrams to determine if a given formula is a tautology or a contradiction. The resulting BDD can be retreived using the method BDD_Prover::get_bdd.
The methods BDD_Prover::is_tautology and BDD_Prover::is_contradiction indicate whether or not a formula is a tautology or a contradiction. These methods will return answer_yes, answer_no or answer_undefined. If a formula is neither a tautology nor a contradiction according to the prover, a so called witness or counter example can be returned by the methods BDD_Prover::get_witness and BDD_Prover::get_counter_example. A witness is a valuation for which the formula holds, a counter example is a valuation for which it does not hold.
| Enumerator | |
|---|---|
| answer_yes | |
| answer_no | |
| answer_undefined | |
Definition at line 76 of file bdd_prover.h.
| Enumerator | |
|---|---|
| less | |
| less_eq | |
| equal | |
Definition at line 102 of file linear_inequalities.h.
| Enumerator | |
|---|---|
| true_end_node | |
| false_end_node | |
| intermediate_node | |
Definition at line 1296 of file linear_inequalities.h.
The enumeration type smt_solver_type enumerates all available SMT solvers.
| Enumerator | |
|---|---|
| solver_type_cvc | |
| solver_type_z3 | |
Definition at line 22 of file solver_type.h.
|
inline |
Definition at line 471 of file linear_inequalities.h.
|
inline |
Definition at line 491 of file linear_inequalities.h.
|
inline |
|
inline |
| replace_capture_avoiding_variables_builder< Builder, Binder, Substitution > mcrl2::data::detail::apply_replace_capture_avoiding_variables_builder | ( | capture_avoiding_substitution_updater< Substitution > & | sigma | ) |
Definition at line 127 of file replace_capture_avoiding.h.
| replace_capture_avoiding_variables_builder_with_an_identifier_generator< Builder, Binder, Substitution, IdentifierGenerator > mcrl2::data::detail::apply_replace_capture_avoiding_variables_builder_with_an_identifier_generator | ( | Substitution & | sigma, |
| IdentifierGenerator & | id_generator | ||
| ) |
Definition at line 166 of file replace_capture_avoiding_with_an_identifier_generator.h.
|
inline |
Definition at line 30 of file print_utility.h.
| std::set< variable > mcrl2::data::detail::bound_variables_in_substitution | ( | const jitty_assignments_for_a_rewrite_rule & | assignments | ) |
|
inline |
Returns true if the left hand sides of assignments are contained in variables.
| assignments | A sequence of assignments to data variables |
| variables | A sequence of data variables |
Definition at line 56 of file data_utility.h.
|
inline |
Returns true if the domain sorts and range sort of the given functions are contained in sorts.
| range | A sequence of data operations |
| sorts | A set of sort expressions |
Definition at line 184 of file data_utility.h.
|
inline |
Definition at line 26 of file variable_context.h.
|
inline |
Returns true if the domain sorts and the codomain sort of the given sort s are contained in sorts.
| s | A sort expression |
| sorts | A set of sort expressions |
sorts Definition at line 76 of file data_utility.h.
| bool mcrl2::data::detail::check_sorts | ( | Iterator | first, |
| Iterator | last, | ||
| const SortContainer & | sorts | ||
| ) |
Returns true if the domain sorts and the range sort of the sorts in the sequence [first, last) are contained in sorts.
| first | Start of a sequence of sorts |
| last | End of a sequence of sorts |
| sorts | A set of sort expressions |
sorts Definition at line 130 of file data_utility.h.
|
inline |
Returns true if names of the given variables are not contained in names.
| variables | A sequence of data variables |
| names | A set of strings |
Definition at line 164 of file data_utility.h.
| bool mcrl2::data::detail::check_variable_sorts | ( | const VariableContainer & | variables, |
| const SortContainer & | sorts | ||
| ) |
Returns true if the domain sorts and the range sort of the given variables are contained in sorts.
| variables | A container with data variables |
| sorts | A set of sort expressions |
Definition at line 147 of file data_utility.h.
|
static |
Definition at line 524 of file rewrite.cpp.
|
static |
Definition at line 535 of file rewrite.cpp.
|
inline |
Definition at line 286 of file application.h.
|
static |
Definition at line 558 of file rewrite.cpp.
|
static |
Definition at line 567 of file rewrite.cpp.
| void mcrl2::data::detail::CheckRewriteRule | ( | const data_equation & | data_eqn | ) |
Check that an mCRL2 data equation is a valid rewrite rule. If not, an runtime_error is thrown indicating the problem.
| DataEqn | The mCRL2 data equation to be checked. |
| std::runtime_error | containing a reason why DataEqn is not a valid rewrite rule. |
Definition at line 582 of file rewrite.cpp.
| bool mcrl2::data::detail::compare_property_maps | ( | const std::string & | message, |
| const PropertyMap & | map1, | ||
| const std::string & | expected_result | ||
| ) |
Definition at line 296 of file data_property_map.h.
| bool mcrl2::data::detail::compute_finite_function_sorts | ( | const function_sort & | sort, |
| enumerator_identifier_generator & | id_generator, | ||
| const data::data_specification & | dataspec, | ||
| Rewriter | datar, | ||
| data_expression_vector & | result, | ||
| variable_list & | function_parameter_list | ||
| ) |
Computes the elements of a finite function sort, and puts them in result. If there are too many elements, false is returned.
Definition at line 107 of file enumerator.h.
| bool mcrl2::data::detail::compute_finite_set_elements | ( | const container_sort & | sort, |
| const data_specification & | dataspec, | ||
| Rewriter | datar, | ||
| MutableSubstitution & | sigma, | ||
| data_expression_vector & | result, | ||
| enumerator_identifier_generator & | id_generator | ||
| ) |
Computes the elements of a finite set sort, and puts them in result. If there are too many elements, false is returned.
Definition at line 80 of file enumerator.h.
| std::tuple< data_expression, data_expression > mcrl2::data::detail::compute_Phi_Psi | ( | const std::vector< data_expression > & | X, |
| const std::set< variable > & | V, | ||
| BinaryOperation | op, | ||
| data_expression | empty_sequence_result | ||
| ) |
Definition at line 42 of file quantifiers_inside_rewriter.h.
|
inline |
Definition at line 68 of file linear_inequalities_utilities.h.
|
inline |
For a list of rules with equal left hand sides of match_criteria and only variables in the right hand sides of match_criteria, construct a right hand side based on the conditions and right hand sides of the rules.
Definition at line 109 of file unfold_pattern_matching.h.
| data_expression mcrl2::data::detail::construct_rhs | ( | StructInfo & | ssf, |
| representative_generator & | gen, | ||
| const std::vector< rule > & | rules, | ||
| const sort_expression & | sort | ||
| ) |
For a list of rules with equal left hand sides of match_criteria, construct a right hand side.
Definition at line 148 of file unfold_pattern_matching.h.
|
inline |
Definition at line 232 of file application.h.
|
inline |
Create the finite set { x }, with x a data expression.
Definition at line 23 of file data_construction.h.
|
inline |
Create the set { x | phi }, with phi a predicate that may depend on the variable x.
Definition at line 33 of file data_construction.h.
|
inline |
Create the predicate 'x in X', with X a set.
Definition at line 42 of file data_construction.h.
| strategy mcrl2::data::detail::create_strategy | ( | data_equation_list | rules | ) |
Creates a strategy for given set of rewrite rules with head symbol f.
| std::shared_ptr< Rewriter > mcrl2::data::detail::createRewriter | ( | const data_specification & | DataSpec, |
| const used_data_equation_selector & | equations_selector, | ||
| rewrite_strategy | Strategy = jitty |
||
| ) |
Create a rewriter.
| DataSpec | A data specification. |
| Strategy | The rewrite strategy to be used by the rewriter. |
Definition at line 498 of file rewrite.cpp.
| void mcrl2::data::detail::data_rewrite | ( | data_expression & | result, |
| const data_expression & | x, | ||
| const DataRewriter & | R, | ||
| no_substitution & | |||
| ) |
Definition at line 30 of file data_rewriter.h.
| void mcrl2::data::detail::data_rewrite | ( | data_expression & | result, |
| const data_expression & | x, | ||
| const DataRewriter & | R, | ||
| SubstitutionFunction & | sigma | ||
| ) |
Definition at line 24 of file data_rewriter.h.
| atermpp::aterm mcrl2::data::detail::data_specification_to_aterm | ( | const data_specification & | s | ) |
Definition at line 39 of file data_io.cpp.
|
inlinestatic |
|
inline |
description of solver type
Definition at line 84 of file solver_type.h.
|
inline |
Definition at line 36 of file rewrite_statistics.h.
|
inline |
Definition at line 486 of file linear_inequalities.h.
|
inline |
Definition at line 84 of file linear_inequalities_utilities.h.
|
inline |
Definition at line 396 of file linear_inequalities.h.
|
inline |
Definition at line 88 of file enumerator_substitution.h.
|
inline |
Definition at line 75 of file enumerator_substitution.h.
|
inline |
Checks if the sorts of the variables/expressions in both lists are equal.
| v | A sequence of data variables |
| w | A sequence of data expressions |
Definition at line 25 of file equal_sorts.h.
|
inline |
Definition at line 264 of file application.h.
|
inline |
Definition at line 271 of file application.h.
|
inline |
Definition at line 280 of file application.h.
|
inline |
Definition at line 128 of file linear_inequalities.h.
|
inline |
Definition at line 106 of file jitty_jittyc.h.
|
inline |
Definition at line 74 of file jitty_jittyc.h.
|
inline |
Definition at line 319 of file application.h.
|
inline |
Definition at line 326 of file application.h.
|
inline |
|
inline |
Definition at line 39 of file enumerator_iteration_limit.h.
|
inline |
Definition at line 47 of file jitty_jittyc.h.
|
inline |
Definition at line 159 of file jitty_jittyc.h.
|
inline |
Definition at line 148 of file jitty_jittyc.h.
|
inline |
Returns the sort s of Set(s).
| x | A set expression |
Definition at line 51 of file data_construction.h.
|
inline |
Rewrite strategies that should be tested.
Definition at line 49 of file rewrite_strategies.h.
|
inline |
Get the top level function symbol f if expr is of the shape f or f(t1,...,tn)
| expr | The expression from which to extract the top function symbol |
Definition at line 86 of file unfold_pattern_matching.h.
|
inline |
|
static |
Definition at line 4624 of file typecheck.cpp.
|
static |
Definition at line 4677 of file typecheck.cpp.
|
inline |
|
inline |
Definition at line 241 of file test_rewriters.h.
|
static |
Definition at line 35 of file typecheck.cpp.
|
inline |
Definition at line 42 of file rewrite_statistics.h.
|
inlinestatic |
Static initialisation of rewrite strategies used for testing.
Definition at line 26 of file rewrite_strategies.h.
|
inline |
Definition at line 66 of file typecheck.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| bool mcrl2::data::detail::is_enumerable | ( | const data_specification & | dataspec, |
| const Rewriter & | rewr, | ||
| const sort_expression & | sort, | ||
| std::list< sort_expression > & | parents | ||
| ) |
Definition at line 157 of file enumerator.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Determine whether a data expression is an inequality.
| e | A data expression |
Definition at line 60 of file linear_inequalities_utilities.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 29 of file type_checker.h.
|
inline |
|
inline |
|
inline |
Definition at line 81 of file type_checker.h.
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 22 of file type_checker.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 66 of file is_untyped.h.
|
inline |
Definition at line 356 of file linear_inequalities.h.
|
inlinestatic |
Definition at line 53 of file typecheck.cpp.
|
static |
Definition at line 4712 of file typecheck.cpp.
|
inlinestatic |
Definition at line 48 of file typecheck.cpp.
| bool mcrl2::data::detail::isValidRewriteRule | ( | const data_equation & | data_eqn | ) |
Check whether or not an mCRL2 data equation is a valid rewrite rule.
| DataEqn | The mCRL2 data equation to be checked. |
Definition at line 640 of file rewrite.cpp.
|
inline |
Definition at line 550 of file linear_inequalities.h.
|
inline |
Definition at line 536 of file linear_inequalities.h.
|
inline |
Definition at line 543 of file linear_inequalities.h.
|
inline |
| apply_rewriter_builder< Builder, DataRewriter, SubstitutionFunction > mcrl2::data::detail::make_apply_rewriter_builder | ( | const DataRewriter & | datar, |
| SubstitutionFunction & | sigma | ||
| ) |
Definition at line 99 of file data_rewriter.h.
|
inline |
Definition at line 35 of file type_checker.h.
|
inline |
Definition at line 45 of file enumerator.h.
| rewrite_data_expressions_builder< Builder, Rewriter > mcrl2::data::detail::make_rewrite_data_expressions_builder | ( | Rewriter | R | ) |
| rewrite_data_expressions_with_substitution_builder< Builder, Rewriter, Substitution > mcrl2::data::detail::make_rewrite_data_expressions_with_substitution_builder | ( | Rewriter | R, |
| Substitution | sigma | ||
| ) |
| std::set< typename Container::value_type > mcrl2::data::detail::make_set | ( | const Container & | c | ) |
Makes a set of the given container.
| c | A container |
Definition at line 74 of file sequence_algorithm.h.
|
inline |
Definition at line 30 of file enumerator.h.
|
inline |
Definition at line 36 of file quantifiers_inside_rewriter.h.
|
inline |
Definition at line 30 of file quantifiers_inside_rewriter.h.
|
inline |
Definition at line 335 of file linear_inequalities.h.
|
inline |
Definition at line 345 of file linear_inequalities.h.
|
static |
|
inline |
Definition at line 406 of file linear_inequalities.h.
|
inline |
Definition at line 420 of file linear_inequalities.h.
|
static |
Definition at line 4728 of file typecheck.cpp.
|
inline |
Definition at line 481 of file linear_inequalities.h.
| normalizer< Function > mcrl2::data::detail::N | ( | const Function & | f | ) |
Definition at line 180 of file test_rewriters.h.
|
inline |
Definition at line 106 of file linear_inequalities.h.
|
inline |
Definition at line 22 of file linear_inequalities_utilities.h.
| T mcrl2::data::detail::normalize_and_or | ( | const T & | x | ) |
Definition at line 84 of file test_rewriters.h.
| void mcrl2::data::detail::normalize_and_or | ( | T & | x | ) |
Definition at line 93 of file test_rewriters.h.
| T mcrl2::data::detail::normalize_equality | ( | const T & | x | ) |
Definition at line 148 of file test_rewriters.h.
| void mcrl2::data::detail::normalize_equality | ( | T & | x | ) |
Definition at line 157 of file test_rewriters.h.
|
static |
Definition at line 44 of file rewrite.cpp.
|
inline |
standard conversion from solvert type to stream
Definition at line 76 of file solver_type.h.
| std::ostream & mcrl2::data::detail::operator<< | ( | std::ostream & | out, |
| const capture_avoiding_substitution_updater< Substitution > & | sigma | ||
| ) |
Definition at line 100 of file replace_capture_avoiding.h.
|
inline |
Definition at line 213 of file find_equalities.h.
|
inline |
Definition at line 72 of file parvalues.h.
|
inline |
Definition at line 76 of file unfold_pattern_matching.h.
|
inline |
Definition at line 605 of file match_tree.h.
|
inline |
standard conversion from stream to solver type
Definition at line 48 of file solver_type.h.
|
inline |
Make a conjunction and optimize it if possible.
| left | A term |
| right | A term |
left && right Definition at line 56 of file optimized_boolean_operators.h.
|
inline |
Make an existential quantification.
| v | A sequence of variables |
| arg | A term |
| remove_variables | If true, remove bound variables that do not occur in arg. |
| empty_domain_allowed | If true, and there are no variables in v, treat as empty domain, hence yielding false, otherwise arg arg is returned in this case. |
exists v.arg Definition at line 233 of file optimized_boolean_operators.h.
|
inline |
Make a universal quantification.
| v | A sequence of variables |
| arg | A term |
| remove_variables | If true, remove bound variables that do not occur in arg. |
| empty_domain_allowed | If true, and there are no variables in v, treat as empty domain, hence yielding true, otherwise arg arg is returned in this case. |
forall v.arg Definition at line 175 of file optimized_boolean_operators.h.
|
inline |
Make an implication.
| left | A term |
| right | A term |
left => right Definition at line 133 of file optimized_boolean_operators.h.
|
inline |
!arg Definition at line 26 of file optimized_boolean_operators.h.
|
inline |
Make a disjunction.
| left | A term |
| right | A term |
left || right Definition at line 95 of file optimized_boolean_operators.h.
| data::sort_expression_list mcrl2::data::detail::parameter_sorts | ( | const Container & | parameters | ) |
Returns the sorts of a sequence of parameters.
Definition at line 26 of file data_utility.h.
| data_expression mcrl2::data::detail::parse_data_expression | ( | const std::string & | text | ) |
| data_specification mcrl2::data::detail::parse_data_specification_new | ( | const std::string & | text | ) |
|
inline |
standard conversion from string to solver type
Definition at line 30 of file solver_type.h.
| sort_expression mcrl2::data::detail::parse_sort_expression | ( | const std::string & | text | ) |
| void mcrl2::data::detail::parse_substitution | ( | std::string | text, |
| MutableSubstitution & | sigma, | ||
| const data_specification & | data_spec = data::data_specification() |
||
| ) |
Parses a string of the form "b: Bool := true, n: Nat := 0", and adds the substitutions to the substition function sigma. If the string is surrounded by brackets (e.g. "[b: Bool := true, n: Nat := 0]"), these are ignored.
Definition at line 25 of file parse_substitution.h.
| variable_list mcrl2::data::detail::parse_variable_declaration_list | ( | const std::string & | text | ) |
| variable_list mcrl2::data::detail::parse_variables | ( | const std::string & | text | ) |
|
inline |
Definition at line 117 of file linear_inequalities.h.
|
inline |
Definition at line 509 of file linear_inequalities.h.
| std::string mcrl2::data::detail::ppsort | ( | const VariableContainer & | s | ) |
Definition at line 28 of file parvalues.h.
|
inline |
Definition at line 36 of file print_parse_check.h.
|
inline |
Definition at line 22 of file print_parse_check.h.
|
inline |
standard conversion from solver type to string
Definition at line 65 of file solver_type.h.
|
inline |
Definition at line 33 of file if_rewriter.h.
|
inline |
Definition at line 282 of file quantifiers_inside_rewriter.h.
|
inline |
Definition at line 300 of file quantifiers_inside_rewriter.h.
|
inline |
Definition at line 291 of file quantifiers_inside_rewriter.h.
|
inline |
Definition at line 37 of file print_utility.h.
|
inline |
Definition at line 126 of file jitty_jittyc.h.
|
inline |
|
inline |
| data_expression mcrl2::data::detail::remove_normal_form_function | ( | const data_expression & | t | ) |
removes auxiliary expressions this_term_is_in_normal_form from data_expressions that are being rewritten.
The function below is intended to remove the auxiliary function this_term_is_in_normal_form from a term such that it can for instance be pretty printed. This auxiliary function is used internally in terms when rewriting to avoid to rewrite too often.
|
inline |
Definition at line 383 of file linear_inequalities.h.
|
inline |
Definition at line 26 of file if_rewriter.h.
|
inline |
Definition at line 185 of file jitty_jittyc.h.
|
static |
Definition at line 4636 of file typecheck.cpp.
|
inline |
Definition at line 53 of file jitty_jittyc.h.
|
inline |
Definition at line 197 of file jitty_jittyc.h.
|
inline |
Definition at line 30 of file rewrite_statistics.h.
| bool mcrl2::data::detail::sequence_contains_duplicates | ( | Iterator | first, |
| Iterator | last | ||
| ) |
Returns true if the sequence [first, last) contains duplicates.
| first | Start of a sequence |
| last | End of a sequence |
Definition at line 28 of file sequence_algorithm.h.
| bool mcrl2::data::detail::sequence_empty_intersection | ( | Sequence | s1, |
| Sequence | s2 | ||
| ) |
Determines if the unordered sequences s1 and s2 have an empty intersection.
| s1 | A sequence |
| s2 | A sequence |
Definition at line 86 of file sequence_algorithm.h.
| bool mcrl2::data::detail::sequence_is_subset_of_set | ( | Iterator | first, |
| Iterator | last, | ||
| const std::set< T > & | s | ||
| ) |
Returns true if all elements of the range [first, last) are element of the set s.
| first | Start of a sequence |
| last | End of a sequence |
| s | A set |
Definition at line 58 of file sequence_algorithm.h.
| bool mcrl2::data::detail::sequences_do_overlap | ( | Iterator1 | first1, |
| Iterator1 | last1, | ||
| Iterator2 | first2, | ||
| Iterator2 | last2 | ||
| ) |
Returns true if the two sequences [first1, last1) and [first2, last2) have a non empty intersection.
| first1 | Start of a sequence |
| last1 | End of a sequence |
| first2 | Start of a sequence |
| last2 | End of a sequence |
Definition at line 42 of file sequence_algorithm.h.
|
inline |
Returns the difference of two unordered sets, that are stored in aterm lists.
| x | A sequence of data variables |
| y | A sequence of data variables |
Definition at line 48 of file data_sequence_algorithm.h.
|
inline |
Definition at line 33 of file enumerator_iteration_limit.h.
|
inline |
Definition at line 306 of file linear_inequalities.h.
|
inline |
Definition at line 289 of file linear_inequalities.h.
|
inline |
Returns the intersection of two unordered sets, that are stored in ATerm lists.
| x | A sequence of data variables |
| y | A sequence of data variables |
Definition at line 25 of file data_sequence_algorithm.h.
|
inline |
Splits a boolean term by rewriting it to the shape p1 || p2 || ... || pn or p1 &&...&& pn and then yield a set of the form { p1, p2, ..., pn } where pi does not have || or && anymore as main function symbol. The second parameter indicates what the outermost symbol is.
| expr | A data expression. |
| outermost_symbol_is_or | Indicates whether the outermost symbol is ||. If false it is &&. |
|
inline |
This function first splits the given condition e into real conditions and non real conditions. \detail This function first uses split_condition_aux to split the condition e. Then.
Definition at line 226 of file linear_inequalities_utilities.h.
|
static |
Splits a condition in expressions ranging over reals and the others.
Conceptually, the condition is first transformed to disjunctive normal form. For each disjunct, there will be an entry in both resulting std::vectors, where the real conditions are in "real_conditions", and the others in non_real_conditions. If there are conjuncts with both real and non-real variables an exception is thrown. If negate is true the result will be negated.
| e | A data expression of sort bool. |
| real_condition | Those parts of e with only variables over sort Real. |
| non_real_condition | Those parts of e with only variables not of sort Real. |
| negate | A boolean variable that indicates whether the result must be negated. |
Definition at line 108 of file linear_inequalities_utilities.h.
|
inline |
Splits a list of variables in those that are enumerable, non enumerable and not used, according to a filter.
| variables | A sequence of data variables. |
| data | A data specification. |
| rewr | A data rewriter to determine which elements are enumerable. |
| finite_variables | A sequence of data variables. |
| infinite_variables | A sequence of data variables. |
| unused | A sequence of data variables that do not pass the filter. |
| FILTER | A predicate that indicates whether a variable is used. |
Definition at line 63 of file split_finite_variables.h.
|
inline |
Splits the variables in a subset with finite sort, with infinite sort and those that are not used according to a filter.
| variables | A sequence of data variables. |
| data | A data specification. |
| finite_variables | A sequence of data variables. |
| infinite_variables | A sequence of data variables. |
| unused | A sequence of data variables that do not pass the filter. |
| FILTER | A predicate that indicates whether a variable is used. |
Definition at line 29 of file split_finite_variables.h.
|
inline |
Definition at line 476 of file linear_inequalities.h.
|
inline |
Definition at line 500 of file linear_inequalities.h.
| void mcrl2::data::detail::test_rewriters | ( | Rewriter1 | R1, |
| Rewriter2 | R2, | ||
| std::string | expr1, | ||
| std::string | expr2, | ||
| const std::string & | var_decl = VARIABLE_SPECIFICATION(), |
||
| const std::string & | data_spec = "" |
||
| ) |
Definition at line 226 of file test_rewriters.h.
|
inline |
Definition at line 76 of file linear_inequalities_utilities.h.
| atermpp::term_list< T > mcrl2::data::detail::transform_aterm_list | ( | const Function & | f, |
| const atermpp::term_list< T > & | x | ||
| ) |
Definition at line 41 of file type_checker.h.
|
inline |
Definition at line 185 of file translate_user_notation.h.
|
inline |
Returns true if the names of the given variables are unique.
| variables | A sequence of data variables |
Definition at line 41 of file data_utility.h.
|
inline |
Definition at line 52 of file type_checker.h.
| data::variable mcrl2::data::detail::update_substitution | ( | Substitution & | sigma, |
| const data::variable & | v, | ||
| const std::multiset< data::variable > & | V, | ||
| IdentifierGenerator & | id_generator | ||
| ) |
Definition at line 106 of file replace_capture_avoiding_with_an_identifier_generator.h.
| VariableContainer mcrl2::data::detail::update_substitution | ( | Substitution & | sigma, |
| const VariableContainer & | v, | ||
| const std::multiset< data::variable > & | V, | ||
| IdentifierGenerator & | id_generator | ||
| ) |
Definition at line 128 of file replace_capture_avoiding_with_an_identifier_generator.h.
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 186 of file test_rewriters.h.