We describe the current capabilities of a system for rule-based programming which is being developed by us. The system is called ?Log and consists of a pattern matching system and a strategic programming system embedded into a powerful system for symbolic and numeric computation.
Matching with context and sequence variables, possibly constrained by regular constraints, is an elegant mechanism for retrieving data from objects described by tree-like data structures of arbitrary depth and breadth. The data selected by matching can be processed by successive applications of labeled conditional rewrite rules described by strategies. By integrating these mechanisms, we enable a highly declarative programming style which is useful especially for prototype implementations of deductive systems, solvers for various equational theories, tools for querying and translating XML, various evaluation strategies, etc.