Lace - Syntax of definition statements
======================================

Definition statements start with one of `def` or `define`.  They may
also start `acl` to look more squiddish.

The rough syntax of a definition statement is:

    define <name> <controltype> <0-or-more-args>

for example:

    define is-admin is-in-group administrators

There are some loose constraints on the name and controltype
arguments.  The name SHOULD NOT contain quote characters and MUST NOT
start with an exclamation point.  The controltype simply SHOULD NOT
contain quotes.

The control types are typically provided by the program which is using
Lace.  However Lace does provide some simple control types which can
be useful and callers are welcome to add them to their engines.

The two simple control types Lace provides are the `allof` and `anyof`
controls.  They, as their arguments, take two or more rule names and match if
all or any (respectively) of their arguments resolve to true.  As with other
parts of Lace, if the rule names are prefixed by exclamation points then their
result is inverted before being tested.

These give you ways to produce common subexpressions of the 'AND' and
'OR' forms to be used in later rules.
