The Abstract Rewriting Machine (ARM) is a virtual machine which implements term rewriting.
See also
Wikipedia.
A detailed overview of ARM with references to ARM's compilation process via minimal rewriting systems
can be found in
"Within ARM's reach: compilation of left-linear rewrite systems via minimal rewrite systems".
A description for lazy (non-innermost) rewriting can be found in
"Lazy rewriting on eager machinery".
Term rewriting allows for rule-based, comprehension-based software development
against a formal background of algebraic specifications.
ARM's standard source language EPIC has two main applications:
-
It can be used as a target language, where other specification languages are given an implementation by translating them to EPIC. EPIC is a suitable target for many languages based on pattern matching, tree- (dag-) replacement and term rewriting. To this end, all EPIC tools offer an abstract, abstract syntax oriented API.
-
EPIC can be used as a `systems programming language' in which to write executable specifications. For example, EPIC's compiler, and several other tools for EPIC, have been implemented in EPIC itself.
A documented implementation of ARM (with the term rewriting language Epic) is available
here.
Note that EPIC asnd ARM are no longer being actively maintained.