An expression has a apparent type known at compile time. This type is derived from the types of the entities of which it is composed, e.g., the types of the variables used in it, and the types of the procedures it invokes. Compile-time type checking guarantees that the apparent type of an expression is a supertype of the object obtained by evaluating the expression.
Theta has prefix and infix operators for the common arithmetic and comparison operations, and uses the familiar syntax for array indexing (for example, "a[i]"). However, in Theta these notations are abbreviations for method invocations (7.11). This allows familiar notation to be used for user-defined types when appropriate.