A primitive can be a parenthesized term. A primitive can also be an id-expression, which is an unqualified-id or qualified-id naming a formal parameter, a global variable, a data member, a member function, or an identifier introduced by a quantifier. Finally, a primitive can be the application of a trait function to arguments, or an lcpp-primary.
)| id-expression | fcnId
)| lcpp-primary fcnId ::= identifier
The sort of a parenthesized term is the sort of the enclosed term. Its meaning is the meaning of the term.
A fcnId is a trait function identifier;
not a C++ function identifier.
The sort of a term of the form fcnId
is given by the used traits as follows.
Let the sorts of the terms in term-list be
then there must be a unique trait function named with the identifier
of the fcnId, with signature
S1,...,Sn -> T;
and if so the sort of the whole primitive term is
That is, the sort of the whole primitive term is
the return sort of the trait function overloading that matches the sorts
of the arguments.
Examples of primitives include
(i + 1),
isEmpty(s1 \U s2).
Go to the first, previous, next, last section, table of contents.