%\appendix
%\section{Language grammar}
\begin{verbatim}
language dtl

syntax

rule
  specification ::=
    [ _object + ]

rule
  _object ::=
    _definition

rule
  _object ::=
    _test_case_block

rule
  _definition ::=
    LET _identifier_declaration '=' _set_declaration_list ';'

rule
  _test_case_block ::=
    _test_case

rule
  _test_case_block ::=
    _local_definition_list '[' '[' _test_case_list ']' ']'

rule
  _local_definition_list ::=
    [ _local_definition + ',' ]

rule
  _local_definition ::=
    FOR _identifier_declaration IN _set_declaration_list

rule
  _test_case_list ::=
    [ _test_case + ]

rule
  _test_case ::=
    _assertion ';'

rule
  _test_case ::=
    _premisses IMPLICATION _assertion ';'

rule
  _assertion ::=
    _simple_equation

rule
  _assertion ::=
    _value_expression

rule
  _assertion ::=
    _value_expression '!' '=' _value_expression

rule
  _set_declaration_list ::=
    [ _set_declaration + '|' ]

rule
  _set_declaration ::=
    '[' _value_expression_list ']'

rule
  _set_declaration ::=
    _identifier

rule
  _premisses ::=
    [ premiss + ',' ]

rule
  premiss ::=
    _simple_equation

rule
  premiss ::=
    _value_expression

rule
  _simple_equation ::=
    _value_expression '=' _value_expression

rule
  _value_expression ::=
    _term_expression [ OF _sort_identifier ]

rule
  _value_expression ::=
    _value_expression _operation_identifier _term_expression
    [ OF _sort_identifier ]

rule
  _term_expression ::=
    _operation_identifier [ '(' _value_expression_list ')' ]

rule
  _term_expression ::=
    '(' _value_expression ')'

rule
  _term_expression ::=
    '(' error ')'

rule
  _value_expression_list ::=
    [ _value_expression + ',' ]

rule
  _identifier_declaration ::=
    _identifier_declaration_list ':' _sort_identifier

rule
  _identifier_declaration_list ::=
    [ _identifier + ',' ]

rule
  _sort_identifier ::= IDENTIFIER

rule
  _operation_identifier ::= IDENTIFIER

rule
  _operation_identifier ::= SPECIAL

rule
   _identifier ::= IDENTIFIER

end_language
\end{verbatim}



