The COMBINATION CONSTRAINTS: subsection is used to specify certain kinds of constraints on the combination of words in a human-readable label. This subsection states criteria for well formed labels. This section can contain zero or more required combination specifications. Whereas the REQUIRED COMBINATIONS: subsection described above specified which label words must be combined, the COMBINATION CONSTRAINTS: subsection specifies what label words cannot be combined. Each combination constraint is specified on a separate line following the COMBINATION CONSTRAINTS: keyword. Each such line should consist of exactly one constraint specification (see below for a discussion of continuation lines). Any required prefixes or suffixes must also be specified. Any number of lines containing combination constraints can be specified. The end of the list is taken to be a line starting with the SENSITIVITY LABELS: keyword.
Combination constraint lines can take one of the following three forms:
WORDS1 ! WORDS2
WORDS1 & WORDS2
In all of the cases above, WORDS1 and WORDS2 represent either a single word or multiple words separated by " | " (think of | as meaning "or"). Note that blanks or tabs must appear on both sides of the !, &, and | characters in combination constraints. Form 1 specifies that none of the words WORDS1 can be combined with any of the words WORDS2. Form 2 specifies that any of the words WORDS1 can be combined only with any of the words WORDS2 (it specifies nothing about what the words WORDS2 can or cannot be combined with). Form three specifies that any of the words WORDS1 cannot be combined with any other words.
Because combination constraint lines can get very long, and because each constraint must be on its own line, combination constraint lines can be continued onto the next real line of the file. A combination constraint line is continued by using a \ as the last character of the line. A blank must precede the \. The next non-blank line after a line ending with a \ is taken to be a logical continuation of that line. A single word (including its prefix and/or suffix) cannot be separated with a \; each word must appear together on the same actual line. Thus, using words from Annotated Sample Encodings.
REL CNTRY3 ! REL CNTRY1 | \ REL CNTRY2
is a valid continuation of a combination constraint, whereas
REL CNTRY3 ! REL \ CNTRY11 | REL CNTRY2
Combination constraints need not be specified among words in a hierarchy. In other words, if WORD2 is in a hierarchy over WORD1, then these two words can never appear together in a label. There is no need to additionally specify a combination constraint to prevent their combination.
Similarly, any non-hierarchical mutually exclusive words need not be specified in combination constraints. For example, consider the specification of the following two words:
name= WORD7; markings= 6 ~7; name= WORD8; markings= ~6 7;
The bit encodings of these two words make them mutually exclusive, yet they are not hierarchically related. Such words are automatically prevented from appearing together in a label, even if a combination constraint is not specified.
Conversely, combination constraints cannot prevent the combination of words if the bit encodings of those words force their combination, such with a non-hierarchical composite word (see Enforcing Proper Label Adjudications). For example, consider the three words:
name= WORD12; markings= 6 7; name= WORD10; markings= 0 6; name= WORD11; markings= 1 7;
Note that there are no hierarchies among these words. If both WORD10 and WORD11 are in a label, WORD12 is also automatically present. A combination constraint cannot be used to keep WORD12 from appearing in a label with either WORD10 or WORD11, as long as WORD10 and WORD11 can be combined.
General Considerations for Specifying Encodings discusses some very important considerations concerning the specification of combination constraints.