70 likes | 176 Views
2nd Rewrite Engines Competition (REC). WRLA 2008 7th International Workshop on Rewriting Logic and its Applications. On the organization. A bunch of tiny and small, problems, organized in four categories unconditional rewriting (TRS), conditional rewriting (CTRS),
E N D
2nd Rewrite Engines Competition (REC) WRLA 2008 7th International Workshop on Rewriting Logic and its Applications
On the organization • A bunch of tiny and small, problems, organized in four categories • unconditional rewriting (TRS), • conditional rewriting (CTRS), • rewriting modulo (Modulo), and • context-sensitive rewriting/rewriting with local strategies (CS). • Initially, most of them were used in the 1st competition. At some point some of them were removed. • Semantic mismatch • assumption of confluence and termination • order of the rules • The possibility of adding mid size problems was considered. • All the problems are compiled and executed in the same machine. • Scripts are requested to automate the execution. • We compare times (user time).
The REC language • A very simple rewriting language REC is defined to write the problems. • many-sorted, • no built-ins, • prefix, • no overloading, • conditional rules, • assoc, comm, id • strats • Each of the participants builds a program transforming the problems in this REC syntax to the corresponding tool. • An optimized version of the problems, using any advance feature provided by the tool, could additionally be provided.
<spec> ::= REC-SPEC <id> • [ SORTS <idlist> ] • [ VARS <vardecllist> ] • [ OPS <opdecllist> ] • [ RULES <rulelist> ] • END-SPEC • <idlist> ::= <id> <idlist> | e • <vardecllist> ::= <idlist> : <id> <vardecllist> | e • <opdecllist> ::= <opdecl> <opdecllist> | e • <opdecl> ::= op <id> : <idlist> -> <id> | • op <id> : <idlist> -> <id> { <opattrlist> } • <opattrlist> ::= <opattr> <opattrlist> |Êe • <opattr> ::= assoc | comm | id( <term> ) | strat( <intlist> ) • <rulelist> ::= <rule> <listofrules> | e • <rule> ::= <term> -> <term> | • <term> -> <term> if <condlist> • <condlist> ::= <cond> | <cond> , <condlist> • <cond> ::= <term> -><- <term> | % == • <term> ->/<- <term> | % =/= • <term> ::= <id> | <id> ( ) | <id> ( <termlist> ) • <termlist> ::= <term> | <term> , <termlist> • <intlist> ::= <int> <intlist> | e • <command> ::= get normal form for: <term> | • check the confluence of: <term> -><- <term> • id are non-empty sequences of characters except ‘ ‘, '(', ')', '{', '}', '"' and ','; and excluding '-><-', '->/<-', 'if', and keywords REC-SPEC, SORTS, VARS, OPS, and RULES, and END-SPEC. • int are non-empty sequences of digits • comments are given using '%'. All the text written in the a line after a '%' is discarded The REC language
Parsing issues • ASF+SDF and Stratego/XT are very good defining syntax of languages. • ASF+SDF and TermWare did not transform automatically. • Tom and Maude presented a few limitations: • Tom • cannot handle symbols like &, +, ... • Maude • modules and command must be enclosed in parentheses, • comments must be given as in Maude, • a bug in the manipulation of bubbles forced us to change the input files
Conclusions • Compilers are more efficient in the problems they support. • No conclusions on • memory usage, • development times, • correctness, • big problems, • ... • More automatization is required in the competition: • result checking, • time capture, • results table generation, • ...
THANKS TO THE PARTICIPANTS ASF+SDF: Mark van den Brand Maude: Francisco Durán and Steven Eker Stratego/XT: Lennart Kats, Karl Trygve Kalleberg and Eelco Visser TermWare: Ruslan Shevchenko Tom: Pierre-Etienne Moreau