“…One similarity between the work in [41] and our work is that, to handle input-output in an imperative language, they allow, as we do, extra variables in the righthand sides of rewrite rules. In general, while approaches such as in [5,12,[27][28][29][38][39][40] address symbolic reasoning for equational theorem proving purposes, or apply these techniques to imperative program analysis and verification, even allowing sometimes extra variables in the right-hand sides of equations, e.g., [41,63,64], theses approaches are quite different from ours because of their predominant focus on equational reasoning for proving, often inductively, universal formulas, and/or on applications to, typically sequential, programming languages.…”