Intersection Analysis Procedure

The purpose of this procedure is to ensure that the Intersection matches a supported pattern and to identify aspects of the Intersection that will be used during the mapping procedure.

  1. The Intersection must have exactly two operands.

  2. One of the operands must be a reference to "bit" or "octet", with a finite exponent. This operand is the constraining-operand; it controls the length of the constrained-operand in terms of the number of bits/octets.

  3. The other operand is the constrained-operand.

  4. The exponent on the constraining-operand, being finite, will either be a fixed integer expression (e.g. "4" or "5+4") or it will use a function, passing a label name for the argument. If a function is used, the exponent must be reversible and the referenced label must be defined within the enclosing definition such that it will appear in the encoding prior to the constrained-operand. We call the referenced, labeled string the "length determinant" for the constrained-operand. (The definition of a reversible exponent, see next clause, has the effect of ensuring there will be a single referenced label.)

  5. An exponent is reversible if, given the length of the constrained-operand, an encoder can uniquely determine the value of the label that is referenced by the exponent. This precludes using a user-defined function in the exponent, or referring to more than one label. Relaxing the requirement for exponent reversibility is for further study. This requirement allows us to have the encoder set the value the length determinant based on the actual encoded length of the constrained-operand. It could be relaxed by requiring the user to supply a value for the length determinant and requiring the encoder to verify that the exponent evaluates to a value consistent with the actual encoded length.

  6. Due to considerations related to the internal workings of our code generation tool, we place an additional requirement on the use of length determinants. The length determinant is required to immediately precede the Intersection in the encoding. Therefore, the mappings do not cover the contrary case, which is left for further study.

  7. It is considered an error if the Intersection does not satisfy the requirements specified in this procedure.