In the effort to bring rewriting-based methods into contact with practical applications both in programing and in formal verification, there is a tension between: (i) expressiveness and generality - so that a wide range of applications can be expressed easily and naturally - and (ii) support for formal verification, which is harder to get for general and expressive specifications. This paper answers the challenge of successfully negotiating the tension between goals (i) and (ii) for a wide class of Maude specifications, namely: (a) equational order-sorted conditional specifications (Σ,E∪A), corresponding to functional programs modulo axioms such as associativity and/or commutativity and/or identity axioms and (b) order-sorted conditional rewrite theories R=(Σ,E∪A,R,φ), corresponding to concurrent programs modulo axioms A. For Maude functional programs the key formal property checked is the Church-Rosser property. For concurrent declarative programs in rewriting logic, the key property checked is the coherence between rules and equations modulo the axioms A. Such properties are essential, both for executability purposes and as a basis for verifying many other properties, such as, for example, proving inductive theorems of a functional program, or correct model checking of temporal logic properties for a concurrent program. This paper develops the mathematical foundations on which the checking of these properties (or ground versions of them) is based, presents two tools, the Church-Rosser Checker (CRC) and the Coherence Checker (ChC) supporting the verification of these properties, and illustrates with examples a methodology to establish such properties using the proof obligations returned by the tools.
- Church-Rosser property
- Formal verification
- Order-sorted conditional specifications
- Rewriting modulo
ASJC Scopus subject areas
- Theoretical Computer Science
- Computational Theory and Mathematics