# Module compare

## Expand description

Provides various ways to compare `crate::encoding::Encoding`

s.

Some of the comparisons require an `crate::smt::SmtSolver`

.
You can use the `liblisa-z3`

crate to import bindings to the Z3 SMT solver.

## Modules§

- A condensed summary of the architecture comparison, suitable for export to a file.

## Structs§

- Options for comparing
`MemoryAccesses`

. - A matrix of pairwise comparisons between all architectures.
- Options for comparing
`Encoding`

s. - For each architecture, a group of overlapping encodings.
- The result of
`encodings_semantically_equal`

. Semantics are guaranteed to be equivalent if`equal && !timeout`

holds. - A mapping between part indices of two encodings.
- A row in the architecture comparison table.
- The key for a row in an architecture comparison table. All encodings that have the same RowKey should be grouped into the same row.
- A collection of rows.

## Enums§

- The result of a pairwise comparison between two encodings.
- Represents the equivalence between two encodings.

## Functions§

- Splits the encoding group into multiple groups, such that each group contains encodings that cover the exact same space. This function is one-to-many. That is, it will generate many smaller groups that each cover a small subset.
- Compares the
`MemoryAcesses`

of the two encodings, and returns whether they are equal. - Determines if the dataflows of the encodings provided are equal, ignoring the actual computations. Only compares the overlapping parts of the covered instruction space.
- Determines whether two encodings are semantically equivalent.
- Only compares the overlapping parts of the covered instruction space.