 DEFAULT might sometimes require tagging in order to avoid ambiguity as to which elements are present in a structured value. Assume the following type assignment: EmplRecord2 SEQUENCE {firstName [0] VisibleString OPTIONAL, lastName [1] VisibleString, title [2] VisibleString OPTIONAL, emplCat EmplCat DEFAULT level4, dateOfHire Date} In this case both or any of firstName and title can be omitted. Assume then that two values of type VisibleString are read. Without tagging, it would be impossible for the receiver to know how to interpret the first two values. AML types There are two sets of types in AML (as in ASN.1): built-in types and defined types. The first character in a type references is a $ ($ is a character that is not part of the ASN.1 character set). Otherwise, the same naming conventions and character set as in ASN.1 are used. The following built-in types are defined: $INT, $BCDINT, $BOOL, $OCTSTR, $BITSTR, $IA5STR, $CHOICE, $SET, $SET OF, $SEQ, $SEQ OF, $TOUCHTONESTR, $SPARE0, $SPARE1. The value range notation is the same as in ASN.1. The ASN.1 words OPTIONAL and DEFAULT are substituted with OPT and DEF, but have otherwise the same meaning as in ASN.1. The set of defined types in AML are presently: Appendix 2: Naming and Data Typing in AML $OpProp, $PrimType, $DigStr, $ASPid, $INVid, $PSid, $SRid, $OBid, $OPid with the following type assignments: $OpProp :: $CHOICE {Effect, Synch, Atomic, Destr} $Effect ::= $INT {modifier(0), selector(1), initiator(2), analyser(3)} $Synch ::= $INT {synch(0), asynch(1)} $Atomic ::= $INT {atomic(0), notAtomic(1)} $Destr ::= $INT {destr(0), notDestr(1)} $PrimType ::= $INT {request(0), confirm(1), refuse(2), order(3), offer(4), reject(5), invite(6), replnit(7), repCnf(8), repRef(9)} $DigStr ::= $TOUCHTONESTR (FROM("O"l"1"l"2"l"3"l"4"l"5"l"6"l"7"l"8"l"9") $ASPid ::= $SEQ {$PSid OPT, $OPid, $PrimType} $INVid, $PSid, $SRid, $OBid, $OPid are all $INT Encoding of AML types Type information is never encoded for AML types. Types may be size constrained or not. For example, if the t