The result of the MV-Algorithm that enriches the classified clauses by heuristic indexing information is described by the following EBNF:
classified-procedure ::= (proc <name>/<n> ; <n> is the arity <number-of-clauses> <indexing> <classified-clause-1> ... <classified-clause-n> ) indexing ::= (indexing [ <iblock> ] ) iblock ::= <pblock> | <sblock> pblock ::= (pblock <rblock> { <sblock> | <1block> }+ ) rblock ::= (rblock <clauses> { arg-col }+ ) clauses ::= (clauses { <clause-number> }+ ) arg-col ::= (arg <arg-number> { <base-type> }+ ) base-type ::= <const> | <struct> | <var> const ::= (const <symbol>) struct ::= (struct <symbol> <arity>) var ::= (var <symbol>) 1block ::= (1block <clauses> { arg-col }+ ) sblock ::= (sblock <rblock> <seqind> [ <pblock> ] ) seqind ::= (seqind { <seqind-arg> }+ ) seqind-arg ::= (arg <arg-number> (info <inhomogenity>) <constants> <structures> <lists> <empty-lists> [ <others> ]) constants ::= (const { <element> }* ) structures ::= (struct { <element> }* ) element ::= ( <element-name> <clauses> [ <iblock> ] ) element-name ::= <symbol> | ( <symbol> <arity> ) lists ::= (list <clauses> [ <iblock> ] ) empty-lists ::= (nil <clauses> [ <iblock> ] ) others ::= (other <clauses> [ <iblock> ] )
Explanations:
For further details and an example, refer to appendices B and D.