+
+;; Evaluates TERMs one by one until one is evaluated not to 0. If
+;; none is evaluated not to 0, the value is 0. Othersise the value is
+;; 1.
+
+NOT = '<not>' XXXTERM '</not>'
+
+;; If XXX is 0, the value is 1. Othersise the value is 0.
+
+EQUAL = '<equal>' XXXTERM1 XXXTERM2 '</equal>'
+
+;; If XXX1 equals to XXX2, the value is 1. Otherwise the value is 0.
+;; The equality of terms are decided as below:
+;; INT: INT1 equals to INT2 iff they contain the same integer values.
+;; STR: STR1 equals to STR2 iff they contain strings of the same characters.
+;; SYM: SYM1 equals to SSYM2 iff they contain the same symbol.
+;; LIST: LIST1 equals to LIST2 iff they have the same length, and
+;; the Nth element of LIST1 equals to the Nth element of LIST2.
+
+MATCH = '<match>' XXXTERM1 XXXTERM2 <'/match>'
+
+;; If XXX1 matches with XXX2, the value is 1. Otherwise the value is
+;; 0. Two terms match as below:
+;; INT: INT1 matches with INT2 iff they contain the same integer values.
+;; STR: STR1 matches with STR2 iff STR1's string is a valid regular
+;; expression matching with STR2's string
+;; SYM: SYM1 matches with SSYM2 iff they contain the same symbol.
+;; LIST: LIST1 matches with LIST2 iff LIST1 is not longer than
+;; LIST2, and Nth element of LIST1 equals to Nth element of LIST2.
+;; ERROR: ERROR1 matches with ERROR2 iff ERROR1's error type is
+;; <symbol/> or is the same as ERROR2's error type.
+