|
| bool | isDeltaAtZero (const process_expression &t) |
| |
| template<class Expression , IsSubstitution Substitution> |
| Expression | replace_variables_capture_avoiding_alt (const Expression &e, Substitution &sigma) |
| |
| void | detail_check_objectdata (const process_identifier &o) const |
| |
| objectdatatype & | objectIndex (const process_identifier &o) |
| |
| const objectdatatype & | objectIndex (const process_identifier &o) const |
| |
| void | addString (const identifier_string &str) |
| |
| variable_list | make_parameters_rec (const data_expression_list &l, std::set< variable > &occurs_set) |
| |
| variable_list | getparameters_rec (const process_expression &multiAction, std::set< variable > &occurs_set) |
| |
| variable_list | getparameters (const process_expression &multiAction) |
| |
| objectdatatype & | addMultiAction (const process_expression &multiAction, bool &isnew) |
| |
| void | insertvariable (const variable &var, const bool mustbenew) |
| |
| void | insertvariables (const variable_list &vars, const bool mustbenew) |
| |
| template<data::IsSubstitution Substitution> |
| std::set< data::variable > | sigma_variables (const Substitution &sigma) |
| |
| data_expression | RewriteTerm (const data_expression &t) |
| |
| data_expression_list | RewriteTermList (const data_expression_list &t) |
| |
| assignment_list | rewrite_assignments (const assignment_list &t) |
| |
| action | RewriteAction (const action &t) |
| |
| process_instance_assignment | RewriteProcess (const process_instance_assignment &t) |
| |
| process_expression | RewriteMultAct (const process_expression &t) |
| |
| process_expression | pCRLrewrite (const process_expression &t) |
| |
| objectdatatype & | insertAction (const action_label &actionId) |
| |
| void | storeact (const process::action_label_list &acts) |
| |
| objectdatatype & | insert_process_declaration (const process_identifier &procId, const variable_list ¶meters, const process_expression &body, processstatustype s, const bool canterminate, const bool containstime) |
| |
| void | storeprocs (const std::vector< process_equation > &procs) |
| |
| bool | searchProcDeclaration (const variable_list ¶meters, const process_expression &body, const processstatustype s, const bool canterminate, const bool containstime, process_identifier &p) const |
| |
| action_list | linMergeMultiActionList (const action_list &ma1, const action_list &ma2) |
| |
| action_list | linMergeMultiActionListProcess (const process_expression &ma1, const process_expression &ma2) |
| |
| processstatustype | determine_process_statusterm (const process_expression &body, const processstatustype status) |
| |
| void | determine_process_status (const process_identifier &procDecl, const processstatustype status) |
| |
| void | collectPcrlProcesses_term (const process_expression &body, std::vector< process_identifier > &pcrlprocesses, std::set< process_identifier > &visited) |
| |
| void | collectPcrlProcesses (const process_identifier &procDecl, std::vector< process_identifier > &pcrlprocesses, std::set< process_identifier > &visited) |
| |
| void | collectPcrlProcesses (const process_identifier &procDecl, std::vector< process_identifier > &pcrlprocesses) |
| |
| void | filter_vars_by_term (const data_expression &t, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| bool | occursintermlist (const variable &var, const assignment_list &r, const process_identifier &proc_name) const |
| |
| template<typename Iterator > |
| void | filter_vars_by_termlist (Iterator begin, const Iterator &end, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| void | filter_vars_by_multiaction (const action_list &multiaction, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| void | filter_vars_by_assignmentlist (const assignment_list &assignments, const variable_list ¶meters, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| bool | occursinpCRLterm (const variable &var, const process_expression &p, const bool strict) |
| |
| template<IsSubstitution MutableSubstitution> |
| void | alphaconvertprocess (variable_list &sumvars, MutableSubstitution &sigma, const process_expression &p) |
| |
| template<IsSubstitution MutableSubstitution> |
| void | alphaconvert (variable_list &sumvars, MutableSubstitution &sigma, const variable_list &occurvars, const data_expression_list &occurterms) |
| |
| std::set< variable > | find_free_variables_process (const process_expression &p) |
| |
| template<IsSubstitution Substitution> |
| assignment_list | substitute_assignmentlist (const assignment_list &assignments, const variable_list ¶meters, const bool replacelhs, const bool replacerhs, Substitution &sigma) |
| |
| bool | check_valid_process_instance_assignment (const process_identifier &id, const assignment_list &assignments) |
| |
| template<IsSubstitution Substitution> |
| process_expression | substitute_pCRLproc (const process_expression &p, Substitution &sigma) |
| |
| process_instance_assignment | transform_process_instance_to_process_instance_assignment (const process_instance &procId, const std::set< variable > &bound_variables=std::set< variable >()) |
| |
| variable_list | parameters_that_occur_in_body (const variable_list ¶meters, const process_expression &body) |
| |
| process_identifier | newprocess (const variable_list ¶meters, const process_expression &body, const processstatustype ps, const bool canterminate, const bool containstime) |
| |
| process_expression | wraptime (const process_expression &body, const data_expression &time, const variable_list &freevars) |
| |
| variable | get_fresh_variable (const std::string &s, const sort_expression &sort, const int reuse_index=-1) |
| |
| variable_list | make_pars (const sort_expression_list &sortlist) |
| |
| process_expression | distributeActionOverConditions (const process_expression &act, const data_expression &condition, const process_expression &restterm, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| process_expression | bodytovarheadGNF (const process_expression &body, const state s, const variable_list &freevars, const variableposition v, const std::set< variable > &variables_bound_in_sum) |
| |
| void | procstovarheadGNF (const std::vector< process_identifier > &procs) |
| |
| process_expression | putbehind (const process_expression &body1, const process_expression &body2) |
| |
| process_expression | distribute_condition (const process_expression &body1, const data_expression &condition) |
| |
| process_expression | enumerate_distribution_and_sums (const variable_list &sumvars, const variable_list &stochvars, const data_expression &distribution, const process_expression &body) |
| |
| process_expression | distribute_sum_over_a_stochastic_operator (const variable_list &sumvars, const variable_list &stochastic_variables, const data_expression &distribution, const process_expression &body) |
| |
| process_expression | distribute_sum (const variable_list &sumvars, const process_expression &body1) |
| |
| bool | exists_variable_for_sequence (const std::vector< process_instance_assignment > &process_names, process_identifier &result) |
| |
| void | extract_names (const process_expression &sequence, std::vector< process_instance_assignment > &result) |
| |
| variable_list | parscollect (const process_expression &oldbody, process_expression &newbody) |
| |
| assignment_list | argscollect_regular (const process_expression &t, const variable_list &vl, const std::set< variable > &variables_bound_in_sum) |
| |
| assignment_list | argscollect_regular2 (const process_expression &t, variable_list &vl) |
| |
| process_expression | cut_off_unreachable_tail (const process_expression &t) |
| |
| process_expression | create_regular_invocation (process_expression sequence, std::vector< process_identifier > &todo, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| process_expression | to_regular_form (const process_expression &t, std::vector< process_identifier > &todo, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| process_expression | distributeTime (const process_expression &body, const data_expression &time, const variable_list &freevars, data_expression &timecondition) |
| |
| process_expression | procstorealGNFbody (const process_expression &body, variableposition v, std::vector< process_identifier > &todo, const bool regular, processstatustype mode, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| void | procstorealGNFrec (const process_identifier &procIdDecl, const variableposition v, std::vector< process_identifier > &todo, const bool regular) |
| |
| void | procstorealGNF (const process_identifier &procsIdDecl, const bool regular) |
| |
| void | make_pCRL_procs (const process_identifier &id, std::set< process_identifier > &reachable_process_identifiers) |
| |
| void | make_pCRL_procs (const process_expression &t, std::set< process_identifier > &reachable_process_identifiers) |
| |
| std::set< process_identifier > | minimize_set_of_reachable_process_identifiers (const std::set< process_identifier > &reachable_process_identifiers, const process_identifier &initial_process) |
| |
| std::set< process_identifier > | remove_stochastic_operators_from_front (const std::set< process_identifier > &reachable_process_identifiers, process_identifier &initial_process_id, stochastic_distribution &initial_stochastic_distribution) |
| |
| bool | alreadypresent (variable &var, const variable_list &vl, mutable_indexed_substitution<> ¶meter_renaming) |
| |
| variable_list | joinparameters (const variable_list &par1, const variable_list &par2, mutable_indexed_substitution<> ¶meter_renaming) |
| |
| variable_list | collectparameterlist (std::set< process_identifier > &pCRLprocs) |
| |
| void | declare_control_state (const std::set< process_identifier > &pCRLprocs) |
| |
| bool | is_global_variable (const data_expression &d) const |
| |
| data_expression | getvar (const variable &var, const stacklisttype &stack) const |
| |
| assignment_list | processencoding (std::size_t i, const assignment_list &t1, const stacklisttype &stack) |
| |
| data_expression_list | processencoding (std::size_t i, const data_expression_list &t1, const stacklisttype &stack) |
| |
| data_expression | correctstatecond (const process_identifier &procId, const std::set< process_identifier > &pCRLproc, const stacklisttype &stack, int regular) |
| |
| data_expression | adapt_term_to_stack (const data_expression &t, const stacklisttype &stack, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| template<typename Iterator > |
| data_expression_vector | adapt_termlist_to_stack (Iterator begin, const Iterator &end, const stacklisttype &stack, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| action_list | adapt_multiaction_to_stack (const action_list &multiAction, const stacklisttype &stack, const variable_list &vars) |
| |
| data_expression | representative_generator_internal (const sort_expression &s, const bool allow_dont_care_var=true) |
| |
| data_expression | find_ (const variable &s, const assignment_list &args, const stacklisttype &stack, const variable_list &vars, const std::set< variable > &free_variables_in_body, const variable_list &stochastic_variables) |
| |
| data_expression_list | findarguments (const variable_list &pars, const variable_list &parlist, const assignment_list &args, const data_expression_list &t2, const stacklisttype &stack, const variable_list &vars, const std::set< variable > &free_variables_in_body, const variable_list &stochastic_variables) |
| |
| assignment_list | find_dummy_arguments (const variable_list &parlist, const assignment_list &args, const std::set< variable > &free_variables_in_body, const variable_list &stochastic_variables) |
| |
| assignment_list | push_regular (const process_identifier &procId, const assignment_list &args, const stacklisttype &stack, const std::set< process_identifier > &pCRLprocs, bool singlestate, const variable_list &stochastic_variables) |
| |
| assignment_list | make_procargs_regular (const process_expression &t, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const bool singlestate, const variable_list &stochastic_variables) |
| |
| data_expression | push_stack (const process_identifier &procId, const assignment_list &args, const data_expression_list &t2, const stacklisttype &stack, const std::set< process_identifier > &pCRLprocs, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| data_expression | make_procargs_stack (const process_expression &t, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| assignment_list | make_procargs (const process_expression &t, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const variable_list &vars, const bool regular, const bool singlestate, const variable_list &stochastic_variables) |
| |
| data_expression_list | pushdummy_regular_data_expressions (const variable_list &pars, const stacklisttype &stack) |
| |
| assignment_list | pushdummy_regular (const variable_list &pars, const stacklisttype &stack, const variable_list &stochastic_variables) |
| |
| data_expression_list | pushdummyrec_stack (const variable_list &totalpars, const variable_list &pars, const stacklisttype &stack, const variable_list &stochastic_variables) |
| |
| data_expression_list | pushdummy_stack (const variable_list ¶meters, const stacklisttype &stack, const variable_list &stochastic_variables) |
| |
| data_expression_list | make_initialstate (const process_identifier &initialProcId, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const bool regular, const bool singlecontrolstate, const stochastic_distribution &initial_stochastic_distribution) |
| |
| assignment_list | dummyparameterlist (const stacklisttype &stack, const bool singlestate) |
| |
| void | insert_summand (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const variable_list &sumvars, const data_expression &condition, const action_list &multiAction, const data_expression &actTime, const stochastic_distribution &distribution, const assignment_list &procargs, const bool has_time, const bool is_deadlock_summand) |
| |
| void | add_summands (const process_identifier &procId, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, process_expression summandterm, const std::set< process_identifier > &pCRLprocs, const stacklisttype &stack, const bool regular, const bool singlestate, const variable_list &process_parameters) |
| |
| void | collectsumlistterm (const process_identifier &procId, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_expression &body, const variable_list &pars, const stacklisttype &stack, const bool regular, const bool singlestate, const std::set< process_identifier > &pCRLprocs) |
| |
| void | collectsumlist (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const std::set< process_identifier > &pCRLprocs, const variable_list &pars, const stacklisttype &stack, bool regular, bool singlestate) |
| |
| std::size_t | create_enumeratedtype (const std::size_t n) |
| |
| data::function_symbol | find_case_function (std::size_t index, const sort_expression &sort) const |
| |
| void | define_equations_for_case_function (const std::size_t index, const data::function_symbol &functionname, const sort_expression &sort) |
| |
| void | create_case_function_on_enumeratedtype (const sort_expression &sort, const std::size_t enumeratedtype_index) |
| |
| bool | mergeoccursin (variable &var, const variable_list &v, variable_list &matchinglist, variable_list &pars, data_expression_list &args, const variable_list &process_parameters) |
| |
| data_expression | variables_are_equal_to_default_values (const variable_list &vl) |
| |
| data_expression_list | extend_conditions (const variable &var, const data_expression_list &conditionlist) |
| |
| data_expression | transform_matching_list (const variable_list &matchinglist) |
| |
| data_expression_list | addcondition (const variable_list &matchinglist, const data_expression_list &conditionlist) |
| |
| variable_list | merge_var (const variable_list &v1, const variable_list &v2, std::vector< variable_list > &renamings_pars, std::vector< data_expression_list > &renamings_args, data_expression_list &conditionlist, const variable_list &process_parameters) |
| |
| variable_list | make_binary_sums (std::size_t n, const sort_expression &enumtypename, data_expression &condition, const variable_list &tail) |
| |
| data_expression | construct_binary_case_tree_rec (std::size_t n, const variable_list &sums, data_expression_list &terms, const sort_expression &termsort, const enumtype &e) |
| |
| template<class T > |
| bool | all_equal (const atermpp::term_list< T > &l) |
| |
| data_expression | construct_binary_case_tree (std::size_t n, const variable_list &sums, data_expression_list terms, const sort_expression &termsort, const enumtype &e) |
| |
| assignment_list | make_optimised_assignment_list (const variable_list ¶meters, const data_expression_list &resultnextstate, const variable_list &sum_vars, const variable_list &stoch_vars) |
| |
| stochastic_action_summand | collect_sum_arg_arg_cond (const enumtype &e, const stochastic_action_summand_vector &action_summands, const variable_list ¶meters) |
| |
| deadlock_summand | collect_sum_arg_arg_cond (const enumtype &e, const deadlock_summand_vector &deadlock_summands, const variable_list ¶meters) |
| |
| void | cluster_actions (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const variable_list &pars) |
| |
| void | generateLPEpCRL (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_identifier &procId, const bool containstime, const bool regular, variable_list ¶meters, data_expression_list &init, stochastic_distribution &initial_stochastic_distribution) |
| |
| variable_list | construct_renaming (const variable_list &pars1, const variable_list &pars2, variable_list &pars3, variable_list &pars4, const bool unique=true) |
| |
| data_expression | makesingleultimatedelaycondition (const variable_list &sumvars, const variable_list &freevars, const data_expression &condition, const bool has_time, const variable &timevariable, const data_expression &actiontime, variable_list &used_sumvars) |
| |
| lps::detail::ultimate_delay | getUltimateDelayCondition (const stochastic_action_summand_vector &action_summands, const deadlock_summand_vector &deadlock_summands, const variable_list &freevars) |
| |
| data::maintain_variables_in_rhs< data::mutable_map_substitution<> > | make_unique_variables (const variable_list &var_list, const std::string &hint) |
| |
| void | make_parameters_and_sum_variables_unique (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, variable_list &pars, lps::detail::ultimate_delay &ultimate_delay_condition, const std::string &hint="") |
| |
| lps::detail::ultimate_delay | combine_ultimate_delays (const lps::detail::ultimate_delay &delay1, const lps::detail::ultimate_delay &delay2) |
| | Returns the conjunction of the two delay conditions and the join of the variables, where the variables in delay2 are renamed to avoid conflict with those in delay1.
|
| |
| void | calculate_left_merge_action (const lps::detail::ultimate_delay &ultimate_delay_condition, const stochastic_action_summand_vector &action_summands1, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands) |
| |
| void | calculate_left_merge_deadlock (const lps::detail::ultimate_delay &ultimate_delay_condition, const deadlock_summand_vector &deadlock_summands1, const bool is_allow, const bool is_block, const stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_left_merge (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const lps::detail::ultimate_delay &ultimate_delay_condition2, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_communication_merge_action_summands (const stochastic_action_summand_vector &action_summands1, const stochastic_action_summand_vector &action_summands2, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands) |
| |
| void | calculate_communication_merge_action_deadlock_summands (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_communication_merge_deadlock_summands (const deadlock_summand_vector &deadlock_summands1, const deadlock_summand_vector &deadlock_summands2, const stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_communication_merge (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const stochastic_action_summand_vector &action_summands2, const deadlock_summand_vector &deadlock_summands2, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | combine_summand_lists (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const lps::detail::ultimate_delay &ultimate_delay_condition1, const stochastic_action_summand_vector &action_summands2, const deadlock_summand_vector &deadlock_summands2, const lps::detail::ultimate_delay &ultimate_delay_condition2, const variable_list &par1, const variable_list &par3, const action_name_multiset_list &allowlist1, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | parallelcomposition (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const variable_list &pars1, const data_expression_list &init1, const stochastic_distribution &initial_stochastic_distribution1, const lps::detail::ultimate_delay &ultimate_delay_condition1, const stochastic_action_summand_vector &action_summands2, const deadlock_summand_vector &deadlock_summands2, const variable_list &pars2, const data_expression_list &init2, const stochastic_distribution &initial_stochastic_distribution2, const lps::detail::ultimate_delay &ultimate_delay_condition2, const action_name_multiset_list &allowlist1, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, variable_list &pars_result, data_expression_list &init_result, stochastic_distribution &initial_stochastic_distribution, lps::detail::ultimate_delay &ultimate_delay_condition) |
| |
| void | generateLPEmCRLterm (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_expression &t, const bool regular, const bool rename_variables, variable_list &pars, data_expression_list &init, stochastic_distribution &initial_stochastic_distribution, lps::detail::ultimate_delay &ultimate_delay_condition) |
| | Linearise a process indicated by procIdDecl.
|
| |
| void | generateLPEmCRL (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_identifier &procIdDecl, const bool regular, variable_list &pars, data_expression_list &init, stochastic_distribution &initial_stochastic_distribution, lps::detail::ultimate_delay &ultimate_delay_condition) |
| |
| process_expression | alphaconversionterm (const process_expression &t, const variable_list ¶meters, maintain_variables_in_rhs< mutable_map_substitution<> > sigma) |
| |
| void | alphaconversion (const process_identifier &procId, const variable_list ¶meters) |
| |
| bool | containstimebody (const process_expression &t, bool *stable, std::set< process_identifier > &visited, bool allowrecursion, bool &contains_if_then) |
| |
| bool | containstime_rec (const process_identifier &procId, bool *stable, std::set< process_identifier > &visited, bool &contains_if_then) |
| |
| bool | containstimebody (const process_expression &t) |
| |
| bool | determinewhetherprocessescontaintime (const process_identifier &procId) |
| |
| process_expression | transform_initial_distribution_term (const process_expression &t, const std::map< process_identifier, process_pid_pair > &processes_with_initial_distribution) |
| |
| process_expression | obtain_initial_distribution_term (const process_expression &t) |
| |
| process_expression | obtain_initial_distribution (const process_identifier &procId) |
| |
| bool | canterminatebody (const process_expression &t, bool &stable, std::set< process_identifier > &visited, const bool allowrecursion) |
| |
| bool | canterminate_rec (const process_identifier &procId, bool &stable, std::set< process_identifier > &visited) |
| |
| bool | canterminatebody (const process_expression &t) |
| |
| void | determinewhetherprocessescanterminate (const process_identifier &procId) |
| |
| process_identifier | split_process (const process_identifier &procId, std::map< process_identifier, process_identifier > &visited_id, std::map< process_expression, process_expression > &visited_proc) |
| |
| process_instance_assignment | expand_process_instance_assignment (const process_instance_assignment &t, std::set< process_identifier > &visited_processes) |
| |
| process_instance_assignment | expand_process_instance_assignment (const process_instance_assignment &t) |
| |
| void | transform_process_arguments (const process_identifier &procId, std::set< process_identifier > &visited_processes) |
| |
| void | transform_process_arguments (const process_identifier &procId) |
| |
| process_expression | transform_process_arguments_body (const process_expression &t, const std::set< variable > &bound_variables, std::set< process_identifier > &visited_processes) |
| |
| process_expression | split_body (const process_expression &t, std::map< process_identifier, process_identifier > &visited_id, std::map< process_expression, process_expression > &visited_proc, const variable_list ¶meters) |
| |
| process_identifier | splitmCRLandpCRLprocsAndAddTerminatedAction (const process_identifier &procId) |
| |
| void | AddTerminationActionIfNecessary (const stochastic_action_summand_vector &summands) |
| |
| bool | isDeltaAtZero (const process_expression &t) |
| |
| template<class Expression , IsSubstitution Substitution> |
| Expression | replace_variables_capture_avoiding_alt (const Expression &e, Substitution &sigma) |
| |
| void | detail_check_objectdata (const process_identifier &o) const |
| |
| objectdatatype & | objectIndex (const process_identifier &o) |
| |
| const objectdatatype & | objectIndex (const process_identifier &o) const |
| |
| void | addString (const identifier_string &str) |
| |
| variable_list | make_parameters_rec (const data_expression_list &l, std::set< variable > &occurs_set) |
| |
| variable_list | getparameters_rec (const process_expression &multiAction, std::set< variable > &occurs_set) |
| |
| variable_list | getparameters (const process_expression &multiAction) |
| |
| objectdatatype & | addMultiAction (const process_expression &multiAction, bool &isnew) |
| |
| void | insertvariable (const variable &var, const bool mustbenew) |
| |
| void | insertvariables (const variable_list &vars, const bool mustbenew) |
| |
| template<data::IsSubstitution Substitution> |
| std::set< data::variable > | sigma_variables (const Substitution &sigma) |
| |
| data_expression | RewriteTerm (const data_expression &t) |
| |
| data_expression_list | RewriteTermList (const data_expression_list &t) |
| |
| assignment_list | rewrite_assignments (const assignment_list &t) |
| |
| action | RewriteAction (const action &t) |
| |
| process_instance_assignment | RewriteProcess (const process_instance_assignment &t) |
| |
| process_expression | RewriteMultAct (const process_expression &t) |
| |
| process_expression | pCRLrewrite (const process_expression &t) |
| |
| objectdatatype & | insertAction (const action_label &actionId) |
| |
| void | storeact (const process::action_label_list &acts) |
| |
| objectdatatype & | insert_process_declaration (const process_identifier &procId, const variable_list ¶meters, const process_expression &body, processstatustype s, const bool canterminate, const bool containstime) |
| |
| void | storeprocs (const std::vector< process_equation > &procs) |
| |
| bool | searchProcDeclaration (const variable_list ¶meters, const process_expression &body, const processstatustype s, const bool canterminate, const bool containstime, process_identifier &p) const |
| |
| action_list | linMergeMultiActionList (const action_list &ma1, const action_list &ma2) |
| |
| action_list | linMergeMultiActionListProcess (const process_expression &ma1, const process_expression &ma2) |
| |
| processstatustype | determine_process_statusterm (const process_expression &body, const processstatustype status) |
| |
| void | determine_process_status (const process_identifier &procDecl, const processstatustype status) |
| |
| void | collectPcrlProcesses_term (const process_expression &body, std::vector< process_identifier > &pcrlprocesses, std::set< process_identifier > &visited) |
| |
| void | collectPcrlProcesses (const process_identifier &procDecl, std::vector< process_identifier > &pcrlprocesses, std::set< process_identifier > &visited) |
| |
| void | collectPcrlProcesses (const process_identifier &procDecl, std::vector< process_identifier > &pcrlprocesses) |
| |
| void | filter_vars_by_term (const data_expression &t, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| bool | occursintermlist (const variable &var, const assignment_list &r, const process_identifier &proc_name) const |
| |
| template<typename Iterator > |
| void | filter_vars_by_termlist (Iterator begin, const Iterator &end, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| void | filter_vars_by_multiaction (const action_list &multiaction, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| void | filter_vars_by_assignmentlist (const assignment_list &assignments, const variable_list ¶meters, const std::set< variable > &vars_set, std::set< variable > &vars_result_set) |
| |
| bool | occursinpCRLterm (const variable &var, const process_expression &p, const bool strict) |
| |
| template<IsSubstitution MutableSubstitution> |
| void | alphaconvertprocess (variable_list &sumvars, MutableSubstitution &sigma, const process_expression &p) |
| |
| template<IsSubstitution MutableSubstitution> |
| void | alphaconvert (variable_list &sumvars, MutableSubstitution &sigma, const variable_list &occurvars, const data_expression_list &occurterms) |
| |
| std::set< variable > | find_free_variables_process (const process_expression &p) |
| |
| template<IsSubstitution Substitution> |
| assignment_list | substitute_assignmentlist (const assignment_list &assignments, const variable_list ¶meters, const bool replacelhs, const bool replacerhs, Substitution &sigma) |
| |
| bool | check_valid_process_instance_assignment (const process_identifier &id, const assignment_list &assignments) |
| |
| template<IsSubstitution Substitution> |
| process_expression | substitute_pCRLproc (const process_expression &p, Substitution &sigma) |
| |
| process_instance_assignment | transform_process_instance_to_process_instance_assignment (const process_instance &procId, const std::set< variable > &bound_variables=std::set< variable >()) |
| |
| variable_list | parameters_that_occur_in_body (const variable_list ¶meters, const process_expression &body) |
| |
| process_identifier | newprocess (const variable_list ¶meters, const process_expression &body, const processstatustype ps, const bool canterminate, const bool containstime) |
| |
| process_expression | wraptime (const process_expression &body, const data_expression &time, const variable_list &freevars) |
| |
| variable | get_fresh_variable (const std::string &s, const sort_expression &sort, const int reuse_index=-1) |
| |
| variable_list | make_pars (const sort_expression_list &sortlist) |
| |
| process_expression | distributeActionOverConditions (const process_expression &act, const data_expression &condition, const process_expression &restterm, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| process_expression | bodytovarheadGNF (const process_expression &body, const state s, const variable_list &freevars, const variableposition v, const std::set< variable > &variables_bound_in_sum) |
| |
| void | procstovarheadGNF (const std::vector< process_identifier > &procs) |
| |
| process_expression | putbehind (const process_expression &body1, const process_expression &body2) |
| |
| process_expression | distribute_condition (const process_expression &body1, const data_expression &condition) |
| |
| process_expression | enumerate_distribution_and_sums (const variable_list &sumvars, const variable_list &stochvars, const data_expression &distribution, const process_expression &body) |
| |
| process_expression | distribute_sum_over_a_stochastic_operator (const variable_list &sumvars, const variable_list &stochastic_variables, const data_expression &distribution, const process_expression &body) |
| |
| process_expression | distribute_sum (const variable_list &sumvars, const process_expression &body1) |
| |
| bool | exists_variable_for_sequence (const std::vector< process_instance_assignment > &process_names, process_identifier &result) |
| |
| void | extract_names (const process_expression &sequence, std::vector< process_instance_assignment > &result) |
| |
| variable_list | parscollect (const process_expression &oldbody, process_expression &newbody) |
| |
| assignment_list | argscollect_regular (const process_expression &t, const variable_list &vl, const std::set< variable > &variables_bound_in_sum) |
| |
| assignment_list | argscollect_regular2 (const process_expression &t, variable_list &vl) |
| |
| process_expression | cut_off_unreachable_tail (const process_expression &t) |
| |
| process_expression | create_regular_invocation (process_expression sequence, std::vector< process_identifier > &todo, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| process_expression | to_regular_form (const process_expression &t, std::vector< process_identifier > &todo, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| process_expression | distributeTime (const process_expression &body, const data_expression &time, const variable_list &freevars, data_expression &timecondition) |
| |
| process_expression | procstorealGNFbody (const process_expression &body, variableposition v, std::vector< process_identifier > &todo, const bool regular, processstatustype mode, const variable_list &freevars, const std::set< variable > &variables_bound_in_sum) |
| |
| void | procstorealGNFrec (const process_identifier &procIdDecl, const variableposition v, std::vector< process_identifier > &todo, const bool regular) |
| |
| void | procstorealGNF (const process_identifier &procsIdDecl, const bool regular) |
| |
| void | make_pCRL_procs (const process_identifier &id, std::set< process_identifier > &reachable_process_identifiers) |
| |
| void | make_pCRL_procs (const process_expression &t, std::set< process_identifier > &reachable_process_identifiers) |
| |
| std::set< process_identifier > | minimize_set_of_reachable_process_identifiers (const std::set< process_identifier > &reachable_process_identifiers, const process_identifier &initial_process) |
| |
| std::set< process_identifier > | remove_stochastic_operators_from_front (const std::set< process_identifier > &reachable_process_identifiers, process_identifier &initial_process_id, stochastic_distribution &initial_stochastic_distribution) |
| |
| bool | alreadypresent (variable &var, const variable_list &vl, mutable_indexed_substitution<> ¶meter_renaming) |
| |
| variable_list | joinparameters (const variable_list &par1, const variable_list &par2, mutable_indexed_substitution<> ¶meter_renaming) |
| |
| variable_list | collectparameterlist (std::set< process_identifier > &pCRLprocs) |
| |
| void | declare_control_state (const std::set< process_identifier > &pCRLprocs) |
| |
| bool | is_global_variable (const data_expression &d) const |
| |
| data_expression | getvar (const variable &var, const stacklisttype &stack) const |
| |
| assignment_list | processencoding (std::size_t i, const assignment_list &t1, const stacklisttype &stack) |
| |
| data_expression_list | processencoding (std::size_t i, const data_expression_list &t1, const stacklisttype &stack) |
| |
| data_expression | correctstatecond (const process_identifier &procId, const std::set< process_identifier > &pCRLproc, const stacklisttype &stack, int regular) |
| |
| data_expression | adapt_term_to_stack (const data_expression &t, const stacklisttype &stack, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| template<typename Iterator > |
| data_expression_vector | adapt_termlist_to_stack (Iterator begin, const Iterator &end, const stacklisttype &stack, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| action_list | adapt_multiaction_to_stack (const action_list &multiAction, const stacklisttype &stack, const variable_list &vars) |
| |
| data_expression | representative_generator_internal (const sort_expression &s, const bool allow_dont_care_var=true) |
| |
| data_expression | find_ (const variable &s, const assignment_list &args, const stacklisttype &stack, const variable_list &vars, const std::set< variable > &free_variables_in_body, const variable_list &stochastic_variables) |
| |
| data_expression_list | findarguments (const variable_list &pars, const variable_list &parlist, const assignment_list &args, const data_expression_list &t2, const stacklisttype &stack, const variable_list &vars, const std::set< variable > &free_variables_in_body, const variable_list &stochastic_variables) |
| |
| assignment_list | find_dummy_arguments (const variable_list &parlist, const assignment_list &args, const std::set< variable > &free_variables_in_body, const variable_list &stochastic_variables) |
| |
| assignment_list | push_regular (const process_identifier &procId, const assignment_list &args, const stacklisttype &stack, const std::set< process_identifier > &pCRLprocs, bool singlestate, const variable_list &stochastic_variables) |
| |
| assignment_list | make_procargs_regular (const process_expression &t, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const bool singlestate, const variable_list &stochastic_variables) |
| |
| data_expression | push_stack (const process_identifier &procId, const assignment_list &args, const data_expression_list &t2, const stacklisttype &stack, const std::set< process_identifier > &pCRLprocs, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| data_expression | make_procargs_stack (const process_expression &t, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const variable_list &vars, const variable_list &stochastic_variables) |
| |
| assignment_list | make_procargs (const process_expression &t, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const variable_list &vars, const bool regular, const bool singlestate, const variable_list &stochastic_variables) |
| |
| data_expression_list | pushdummy_regular_data_expressions (const variable_list &pars, const stacklisttype &stack) |
| |
| assignment_list | pushdummy_regular (const variable_list &pars, const stacklisttype &stack, const variable_list &stochastic_variables) |
| |
| data_expression_list | pushdummyrec_stack (const variable_list &totalpars, const variable_list &pars, const stacklisttype &stack, const variable_list &stochastic_variables) |
| |
| data_expression_list | pushdummy_stack (const variable_list ¶meters, const stacklisttype &stack, const variable_list &stochastic_variables) |
| |
| data_expression_list | make_initialstate (const process_identifier &initialProcId, const stacklisttype &stack, const std::set< process_identifier > &pcrlprcs, const bool regular, const bool singlecontrolstate, const stochastic_distribution &initial_stochastic_distribution) |
| |
| assignment_list | dummyparameterlist (const stacklisttype &stack, const bool singlestate) |
| |
| void | insert_summand (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const variable_list &sumvars, const data_expression &condition, const action_list &multiAction, const data_expression &actTime, const stochastic_distribution &distribution, const assignment_list &procargs, const bool has_time, const bool is_deadlock_summand) |
| |
| void | add_summands (const process_identifier &procId, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, process_expression summandterm, const std::set< process_identifier > &pCRLprocs, const stacklisttype &stack, const bool regular, const bool singlestate, const variable_list &process_parameters) |
| |
| void | collectsumlistterm (const process_identifier &procId, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_expression &body, const variable_list &pars, const stacklisttype &stack, const bool regular, const bool singlestate, const std::set< process_identifier > &pCRLprocs) |
| |
| void | collectsumlist (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const std::set< process_identifier > &pCRLprocs, const variable_list &pars, const stacklisttype &stack, bool regular, bool singlestate) |
| |
| std::size_t | create_enumeratedtype (const std::size_t n) |
| |
| data::function_symbol | find_case_function (std::size_t index, const sort_expression &sort) const |
| |
| void | define_equations_for_case_function (const std::size_t index, const data::function_symbol &functionname, const sort_expression &sort) |
| |
| void | create_case_function_on_enumeratedtype (const sort_expression &sort, const std::size_t enumeratedtype_index) |
| |
| bool | mergeoccursin (variable &var, const variable_list &v, variable_list &matchinglist, variable_list &pars, data_expression_list &args, const variable_list &process_parameters) |
| |
| data_expression | variables_are_equal_to_default_values (const variable_list &vl) |
| |
| data_expression_list | extend_conditions (const variable &var, const data_expression_list &conditionlist) |
| |
| data_expression | transform_matching_list (const variable_list &matchinglist) |
| |
| data_expression_list | addcondition (const variable_list &matchinglist, const data_expression_list &conditionlist) |
| |
| variable_list | merge_var (const variable_list &v1, const variable_list &v2, std::vector< variable_list > &renamings_pars, std::vector< data_expression_list > &renamings_args, data_expression_list &conditionlist, const variable_list &process_parameters) |
| |
| variable_list | make_binary_sums (std::size_t n, const sort_expression &enumtypename, data_expression &condition, const variable_list &tail) |
| |
| data_expression | construct_binary_case_tree_rec (std::size_t n, const variable_list &sums, data_expression_list &terms, const sort_expression &termsort, const enumtype &e) |
| |
| template<class T > |
| bool | all_equal (const atermpp::term_list< T > &l) |
| |
| data_expression | construct_binary_case_tree (std::size_t n, const variable_list &sums, data_expression_list terms, const sort_expression &termsort, const enumtype &e) |
| |
| assignment_list | make_optimised_assignment_list (const variable_list ¶meters, const data_expression_list &resultnextstate, const variable_list &sum_vars, const variable_list &stoch_vars) |
| |
| stochastic_action_summand | collect_sum_arg_arg_cond (const enumtype &e, const stochastic_action_summand_vector &action_summands, const variable_list ¶meters) |
| |
| deadlock_summand | collect_sum_arg_arg_cond (const enumtype &e, const deadlock_summand_vector &deadlock_summands, const variable_list ¶meters) |
| |
| void | cluster_actions (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const variable_list &pars) |
| |
| void | generateLPEpCRL (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_identifier &procId, const bool containstime, const bool regular, variable_list ¶meters, data_expression_list &init, stochastic_distribution &initial_stochastic_distribution) |
| |
| variable_list | construct_renaming (const variable_list &pars1, const variable_list &pars2, variable_list &pars3, variable_list &pars4, const bool unique=true) |
| |
| data_expression | makesingleultimatedelaycondition (const variable_list &sumvars, const variable_list &freevars, const data_expression &condition, const bool has_time, const variable &timevariable, const data_expression &actiontime, variable_list &used_sumvars) |
| |
| lps::detail::ultimate_delay | getUltimateDelayCondition (const stochastic_action_summand_vector &action_summands, const deadlock_summand_vector &deadlock_summands, const variable_list &freevars) |
| |
| data::maintain_variables_in_rhs< data::mutable_map_substitution<> > | make_unique_variables (const variable_list &var_list, const std::string &hint) |
| |
| void | make_parameters_and_sum_variables_unique (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, variable_list &pars, lps::detail::ultimate_delay &ultimate_delay_condition, const std::string &hint="") |
| |
| lps::detail::ultimate_delay | combine_ultimate_delays (const lps::detail::ultimate_delay &delay1, const lps::detail::ultimate_delay &delay2) |
| | Returns the conjunction of the two delay conditions and the join of the variables, where the variables in delay2 are renamed to avoid conflict with those in delay1.
|
| |
| void | calculate_left_merge_action (const lps::detail::ultimate_delay &ultimate_delay_condition, const stochastic_action_summand_vector &action_summands1, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands) |
| |
| void | calculate_left_merge_deadlock (const lps::detail::ultimate_delay &ultimate_delay_condition, const deadlock_summand_vector &deadlock_summands1, const bool is_allow, const bool is_block, const stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_left_merge (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const lps::detail::ultimate_delay &ultimate_delay_condition2, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_communication_merge_action_summands (const stochastic_action_summand_vector &action_summands1, const stochastic_action_summand_vector &action_summands2, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands) |
| |
| void | calculate_communication_merge_action_deadlock_summands (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_communication_merge_deadlock_summands (const deadlock_summand_vector &deadlock_summands1, const deadlock_summand_vector &deadlock_summands2, const stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | calculate_communication_merge (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const stochastic_action_summand_vector &action_summands2, const deadlock_summand_vector &deadlock_summands2, const action_name_multiset_list &allowlist, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | combine_summand_lists (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const lps::detail::ultimate_delay &ultimate_delay_condition1, const stochastic_action_summand_vector &action_summands2, const deadlock_summand_vector &deadlock_summands2, const lps::detail::ultimate_delay &ultimate_delay_condition2, const variable_list &par1, const variable_list &par3, const action_name_multiset_list &allowlist1, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands) |
| |
| void | parallelcomposition (const stochastic_action_summand_vector &action_summands1, const deadlock_summand_vector &deadlock_summands1, const variable_list &pars1, const data_expression_list &init1, const stochastic_distribution &initial_stochastic_distribution1, const lps::detail::ultimate_delay &ultimate_delay_condition1, const stochastic_action_summand_vector &action_summands2, const deadlock_summand_vector &deadlock_summands2, const variable_list &pars2, const data_expression_list &init2, const stochastic_distribution &initial_stochastic_distribution2, const lps::detail::ultimate_delay &ultimate_delay_condition2, const action_name_multiset_list &allowlist1, const bool is_allow, const bool is_block, stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, variable_list &pars_result, data_expression_list &init_result, stochastic_distribution &initial_stochastic_distribution, lps::detail::ultimate_delay &ultimate_delay_condition) |
| |
| void | generateLPEmCRLterm (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_expression &t, const bool regular, const bool rename_variables, variable_list &pars, data_expression_list &init, stochastic_distribution &initial_stochastic_distribution, lps::detail::ultimate_delay &ultimate_delay_condition) |
| | Linearise a process indicated by procIdDecl.
|
| |
| void | generateLPEmCRL (stochastic_action_summand_vector &action_summands, deadlock_summand_vector &deadlock_summands, const process_identifier &procIdDecl, const bool regular, variable_list &pars, data_expression_list &init, stochastic_distribution &initial_stochastic_distribution, lps::detail::ultimate_delay &ultimate_delay_condition) |
| |
| process_expression | alphaconversionterm (const process_expression &t, const variable_list ¶meters, maintain_variables_in_rhs< mutable_map_substitution<> > sigma) |
| |
| void | alphaconversion (const process_identifier &procId, const variable_list ¶meters) |
| |
| bool | containstimebody (const process_expression &t, bool *stable, std::set< process_identifier > &visited, bool allowrecursion, bool &contains_if_then) |
| |
| bool | containstime_rec (const process_identifier &procId, bool *stable, std::set< process_identifier > &visited, bool &contains_if_then) |
| |
| bool | containstimebody (const process_expression &t) |
| |
| bool | determinewhetherprocessescontaintime (const process_identifier &procId) |
| |
| process_expression | transform_initial_distribution_term (const process_expression &t, const std::map< process_identifier, process_pid_pair > &processes_with_initial_distribution) |
| |
| process_expression | obtain_initial_distribution_term (const process_expression &t) |
| |
| process_expression | obtain_initial_distribution (const process_identifier &procId) |
| |
| bool | canterminatebody (const process_expression &t, bool &stable, std::set< process_identifier > &visited, const bool allowrecursion) |
| |
| bool | canterminate_rec (const process_identifier &procId, bool &stable, std::set< process_identifier > &visited) |
| |
| bool | canterminatebody (const process_expression &t) |
| |
| void | determinewhetherprocessescanterminate (const process_identifier &procId) |
| |
| process_identifier | split_process (const process_identifier &procId, std::map< process_identifier, process_identifier > &visited_id, std::map< process_expression, process_expression > &visited_proc) |
| |
| process_instance_assignment | expand_process_instance_assignment (const process_instance_assignment &t, std::set< process_identifier > &visited_processes) |
| |
| process_instance_assignment | expand_process_instance_assignment (const process_instance_assignment &t) |
| |
| void | transform_process_arguments (const process_identifier &procId, std::set< process_identifier > &visited_processes) |
| |
| void | transform_process_arguments (const process_identifier &procId) |
| |
| process_expression | transform_process_arguments_body (const process_expression &t, const std::set< variable > &bound_variables, std::set< process_identifier > &visited_processes) |
| |
| process_expression | split_body (const process_expression &t, std::map< process_identifier, process_identifier > &visited_id, std::map< process_expression, process_expression > &visited_proc, const variable_list ¶meters) |
| |
| process_identifier | splitmCRLandpCRLprocsAndAddTerminatedAction (const process_identifier &procId) |
| |
| void | AddTerminationActionIfNecessary (const stochastic_action_summand_vector &summands) |
| |