12#ifndef MCRL2_PBES_NORMALIZE_H
13#define MCRL2_PBES_NORMALIZE_H
27struct is_normalized_traverser:
public pbes_expression_traverser<is_normalized_traverser>
29 typedef pbes_expression_traverser<is_normalized_traverser> super;
36 is_normalized_traverser()
41 void enter(
const not_& )
47 void enter(
const imp& )
56struct normalize_builder:
public pbes_expression_builder<normalize_builder>
58 typedef pbes_expression_builder<normalize_builder> super;
68 void apply(T& result,
const data::data_expression& x)
70 result = negated ? data::not_(x) : x;
74 void apply(T& result,
const not_& x)
77 super::apply(result, x.operand());
82 void apply(T& result,
const and_& x)
85 super::apply(left, x.left());
86 pbes_expression
right;
87 super::apply(right, x.right());
99 void apply(T& result,
const or_& x)
101 pbes_expression
left;
102 super::apply(left, x.left());
103 pbes_expression
right;
104 super::apply(right, x.right());
116 void apply(T& result,
const imp& x)
119 pbes_expression
left;
120 super::apply(left, x.left());
122 pbes_expression
right;
123 super::apply(right, x.right());
135 void apply(T& result,
const forall& x)
137 pbes_expression body;
138 super::apply(body, x.body());
143 void apply(T& result,
const exists& x)
145 pbes_expression body;
146 super::apply(body, x.body());
151 void apply(T& result,
const propositional_variable_instantiation& x)
168 is_normalized_traverser f;
178 typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value>::type* =
nullptr
190 typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value>::type* =
nullptr
Standard exception class for reporting runtime errors.
This file contains some functions that are present in all libraries except the data library....
std::string pp(const atermpp::aterm &t)
Transform an aterm to an ascii string.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
void make_and_(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol &&.
void make_or_(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol ||.
data_expression make_exists_(const data::variable_list &v, const data_expression &x)
Make an existential quantification. It checks for an empty variable list, which is not allowed.
data_expression make_forall_(const data::variable_list &v, const data_expression &x)
Make a universal quantification. It checks for an empty variable list, which is not allowed.
void normalize(T &x, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
The function normalize brings (embedded) pbes expressions into positive normal form,...
bool is_normalized(const T &x)
Checks if a pbes expression is normalized.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
add your file description here.