Specifications may be named by definitions and collected in libraries. In the context of a library, the (re)use of a specification may be replaced by a reference to it through its name. The current association between names and the specifications that they reference is called the global environment; it may vary throughout a library: with linear visibility, as in CASL, the global environment for a named specification is determined exclusively by the definitions that precede it. When overriding is forbidden, as in CASL, each valid reference to a particular name refers to the same defined entity.
The local environment given to each named specification in a library should be independent of the other specifications in the library (in CASL, it is empty). Thus any dependence between the specifications is always apparent from the explicit references to the names of specifications.
A library may be located at a particular site on the Internet. The library is referenced from other sites by a name which determines the location and perhaps identifies a particular version of the library. To allow libraries to be relocated without this invalidating existing references to them, library names may be interpreted relative to a global directory that maps names to URLs. Libraries may also be referenced directly by their (relative or absolute) URLs, independently of their registration in the global directory.
A library may incorporate the downloading of [CHANGED:] copies of named specifications from (perhaps particular versions of) other libraries, whenever the library is used. [] To ensure continuous access to specifications despite temporary failures at a particular library site, registered libraries may be mirrored at archive sites.
The semantics of a specification library is the name of the library together with a map taking each specification name defined in it to the semantics of that specification. The initial global environment for the library is empty.