alias

Keyword: alias

An alias is a synonym for some existing declaration. It is typically used to shorten or clarify code.

Example:

module set(elem) = {

    type this
    alias t = this

    relation contains(X:t,Y:elem)
    action emptyset returns(s:t)
    action add(s:t,e:elem) returns (s:t)
    ...
}

Notice something new here: type this. This declares a type with the same name as the object we are declaring (which won't be known until we instantiate this module).

For convenience, we create an alias t for this type. This interface of our abstact set type contains a relation and two actions.