Narrowing and unification are very useful tools for symbolic analysis of
rewrite theories, and thus for any model that can be specified in that way. A
very clear example of their application is the field of formal cryptographic
protocol analysis, which is why narrowing and unification are used in tools
such as Maude-NPA, Tamarin and Akiss. In this work we present the
implementation of a canonical narrowing algorithm, which improves the standard
narrowing algorithm, extended to be able to process rewrite theories with
conditional rules. The conditions of the rules will contain SMT constraints,
which will be carried throughout the execution of the algorithm to determine if
the solutions have associated satisfiable or unsatisfiable constraints, and in
the latter case, discard them.Comment: 41 pages, 7 tables, 1 algorithm, 9 example