PρLog (pronounced Pē-rō-log) is an experimental tool that extends logic programming with strategic conditional transformation rules, combining Prolog with ρLog calculus. It deals with term sequences (also called hedges), transforming them by conditional rules. Transformations are nondeterministic and may yield several results. Strategies provide a control on rule applications in a declarative way. The rules apply matching to the whole input hedge (or, if it is a single term, apply at the top position). Four different types of variables (for terms, term sequences, function symbols, and contexts) give the user flexible control on selecting terms in hedges or subterms in terms. As a result, the obtained code is usually quite short and declaratively clear.
PρLog is implemented in SWI-Prolog. In PρLog programs, Prolog code can also be used. In the current distribution, there are two versions of PρLog: full and light. The light version differs from the full one by not having context variables. As a consequence, PρLog-light can do matching more efficiently based on Prolog's unification, but sometimes the code written in PρLog-light is less compact compared to the full version.