This class represents a canonicalization reduction.

```
# S4 method for Canonicalization,Problem
perform(object, problem)
# S4 method for Canonicalization,Solution,InverseData
invert(object, solution, inverse_data)
# S4 method for Canonicalization
canonicalize_tree(object, expr)
# S4 method for Canonicalization
canonicalize_expr(object, expr, args)
```

## Arguments

- object
A Canonicalization object.

- problem
A Problem object.

- solution
A Solution to a problem that generated the inverse data.

- inverse_data
An InverseData object that contains the data encoding the original problem.

- expr
An Expression object.

- args
List of arguments to canonicalize the expression.

## Methods (by generic)

`perform(object = Canonicalization, problem = Problem)`

: Recursively canonicalize the objective and every constraint.

```
invert(
object = Canonicalization,
solution = Solution,
inverse_data = InverseData
)
```

: Performs the reduction on a problem and returns an equivalent problem.

`canonicalize_tree(Canonicalization)`

: Recursively canonicalize an Expression.

`canonicalize_expr(Canonicalization)`

: Canonicalize an expression, w.r.t. canonicalized arguments.