Annex A
(normative)
Predefined Language Environment
This 
Annex contains the specifications of library units that shall be provided 
by every implementation. There are three root library units: Ada, Interfaces, 
and System; other library units are children of these:
 
 
 
Standard — A.1
  Ada — A.2
    Assertions — 11.4.2
    Asynchronous_Task_Control — D.11
    Calendar — 9.6
      Arithmetic — 9.6.1
      Formatting — 9.6.1
      Time_Zones — 9.6.1
    Characters — A.3.1
      Conversions — A.3.4
      Handling — A.3.2
      Latin_1 — A.3.3
    Command_Line — A.15
    Complex_Text_IO — G.1.3
    Containers — A.18.1
      Bounded_Doubly_Linked_Lists
            — A.18.20
      Bounded_Hashed_Maps — A.18.21
      Bounded_Hashed_Sets — A.18.23
      Bounded_Multiway_Trees — A.18.25
      Bounded_Ordered_Maps — A.18.22
      Bounded_Ordered_Sets — A.18.24
      Bounded_Priority_Queues — A.18.31
      Bounded_Synchronized_Queues
             — A.18.29
      Bounded_Vectors — A.18.19
      Doubly_Linked_Lists — A.18.3
      Generic_Array_Sort — A.18.26
      Generic_Constrained_Array_Sort
            — A.18.26
      Generic_Sort — A.18.26
      Hashed_Maps — A.18.5
      Hashed_Sets — A.18.8
      Indefinite_Doubly_Linked_Lists
            — A.18.12
      Indefinite_Hashed_Maps — A.18.13
      Indefinite_Hashed_Sets — A.18.15
      Indefinite_Holders — A.18.18
      Indefinite_Multiway_Trees — A.18.17
      Indefinite_Ordered_Maps — A.18.14
      Indefinite_Ordered_Sets — A.18.16
      Indefinite_Vectors — A.18.11Standard (...continued)
  Ada (...continued)
    Containers (...continued)
      Multiway_Trees — A.18.10
      Ordered_Maps — A.18.6
      Ordered_Sets — A.18.9
      Synchronized_Queue_Interfaces
            — A.18.27
      Unbounded_Priority_Queues
            — A.18.30
      Unbounded_Synchronized_Queues
            — A.18.28
      Vectors — A.18.2
    Decimal — F.2
    Direct_IO — A.8.4
    Directories — A.16
      Hierarchical_File_Names — A.16.1
      Information — A.16
    Dispatching — D.2.1
      EDF — D.2.6
      Non_Preemptive — D.2.4
      Round_Robin — D.2.5
    Dynamic_Priorities — D.5.1
    Environment_Variables — A.17
    Exceptions — 11.4.1
    Execution_Time — D.14
      Group_Budgets — D.14.2
      Interrupts — D.14.3
      Timers — D.14.1
    Finalization — 7.6
    Float_Text_IO — A.10.9
    Float_Wide_Text_IO — A.11
    Float_Wide_Wide_Text_IO — A.11
    Integer_Text_IO — A.10.8
    Integer_Wide_Text_IO — A.11
    Integer_Wide_Wide_Text_IO — A.11
    Interrupts — C.3.2
      Names — C.3.2
    IO_Exceptions — A.13
    Iterator_Interfaces — 5.5.1
    Locales — A.19
Standard (...continued)
  Ada (...continued)
    Numerics — A.5
      Complex_Arrays — G.3.2
      Complex_Elementary_Functions — G.1.2
      Complex_Types — G.1.1
      Discrete_Random — A.5.2
      Elementary_Functions — A.5.1
      Float_Random — A.5.2
      Generic_Complex_Arrays — G.3.2
      Generic_Complex_Elementary_Functions
            — G.1.2
      Generic_Complex_Types — G.1.1
      Generic_Elementary_Functions — A.5.1
      Generic_Real_Arrays — G.3.1
      Real_Arrays — G.3.1
    Real_Time — D.8
      Timing_Events — D.15
    Sequential_IO — A.8.1
    Storage_IO — A.9
    Streams — 13.13.1
      Stream_IO — A.12.1
    Strings — A.4.1
      Bounded — A.4.4
        Equal_Case_Insensitive — A.4.10
        Hash — A.4.9
        Hash_Case_Insensitive — A.4.9
        Less_Case_Insensitive — A.4.10
      Fixed — A.4.3
        Equal_Case_Insensitive — A.4.10
        Hash — A.4.9
        Hash_Case_Insensitive — A.4.9
        Less_Case_Insensitive — A.4.10
      Equal_Case_Insensitive — A.4.10
      Hash — A.4.9
      Hash_Case_Insensitive — A.4.9
      Less_Case_Insensitive — A.4.10
      Maps — A.4.2
        Constants — A.4.6
      Unbounded — A.4.5
        Equal_Case_Insensitive — A.4.10
        Hash — A.4.9
        Hash_Case_Insensitive — A.4.9
        Less_Case_Insensitive — A.4.10
      UTF_Encoding — A.4.11
        Conversions — A.4.11
        Strings — A.4.11
        Wide_Strings — A.4.11
        Wide_Wide_Strings — A.4.11
Standard (...continued)
  Ada (...continued)
    Strings (...continued)
      Wide_Bounded — A.4.7
        Wide_Equal_Case_Insensitive
              — A.4.7
        Wide_Hash — A.4.7
        Wide_Hash_Case_Insensitive — A.4.7
      Wide_Equal_Case_Insensitive — A.4.7
      Wide_Fixed — A.4.7
        Wide_Equal_Case_Insensitive
              — A.4.7
        Wide_Hash — A.4.7
        Wide_Hash_Case_Insensitive — A.4.7
      Wide_Hash — A.4.7
      Wide_Hash_Case_Insensitive — A.4.7
      Wide_Maps — A.4.7
        Wide_Constants — A.4.7
      Wide_Unbounded — A.4.7
        Wide_Equal_Case_Insensitive
              — A.4.7
        Wide_Hash — A.4.7
        Wide_Hash_Case_Insensitive — A.4.7
      Wide_Wide_Bounded — A.4.8
        Wide_Wide_Equal_Case_Insensitive
              — A.4.8
        Wide_Wide_Hash — A.4.8
        Wide_Wide_Hash_Case_Insensitive
              — A.4.8
      Wide_Wide_Equal_Case_Insensitive
            — A.4.8
      Wide_Wide_Fixed — A.4.8
        Wide_Wide_Equal_Case_Insensitive
              — A.4.8
        Wide_Wide_Hash — A.4.8
        Wide_Wide_Hash_Case_Insensitive
              — A.4.8
      Wide_Wide_Hash — A.4.8
      Wide_Wide_Hash_Case_Insensitive
              — A.4.8
      Wide_Wide_Maps — A.4.8
        Wide_Wide_Constants — A.4.8
      Wide_Wide_Unbounded — A.4.8
        Wide_Wide_Equal_Case_Insensitive
              — A.4.8
        Wide_Wide_Hash — A.4.8
        Wide_Wide_Hash_Case_Insensitive
              — A.4.8
    Synchronous_Barriers — D.10.1
    Synchronous_Task_Control — D.10
      EDF — D.10
Standard (...continued)
  Ada (...continued)
    Tags — 3.9
      Generic_Dispatching_Constructor — 3.9
    Task_Attributes — C.7.2
    Task_Identification — C.7.1
    Task_Termination — C.7.3
    Text_IO — A.10.1
      Bounded_IO — A.10.11
      Complex_IO — G.1.3
      Editing — F.3.3
      Text_Streams — A.12.2
      Unbounded_IO — A.10.12
    Unchecked_Conversion — 13.9
    Unchecked_Deallocate_Subpool — 13.11.5
    Unchecked_Deallocation — 13.11.2
    Wide_Characters — A.3.1
      Handling — A.3.5
    Wide_Text_IO — A.11
      Complex_IO — G.1.4
      Editing — F.3.4
      Text_Streams — A.12.3
      Wide_Bounded_IO — A.11
      Wide_Unbounded_IO — A.11
    Wide_Wide_Characters — A.3.1
      Handling — A.3.6
    Wide_Wide_Text_IO — A.11
      Complex_IO — G.1.5
      Editing — F.3.5
      Text_Streams — A.12.4
      Wide_Wide_Bounded_IO — A.11
      Wide_Wide_Unbounded_IO — A.11 
Implementation Requirements
The implementation shall ensure that each language-defined 
subprogram is reentrant
 in the sense that concurrent 
calls on any language-defined subprogram perform as specified, so long 
as all objects that are denoted by parameters that could be passed by 
reference or designated by parameters of an access type are nonoverlapping. 
 
  For the purpose of determining whether concurrent 
calls on text input-output subprograms are required to perform as specified 
above, when calling a subprogram within Text_IO or its children that 
implicitly operates on one of the default input-output files, the subprogram 
is considered to have a parameter of Current_Input or Current_Output 
(as appropriate).
  If a descendant of a language-defined tagged type 
is declared, the implementation shall ensure that each inherited language-defined 
subprogram behaves as described in this International Standard. In particular, 
overriding a language-defined subprogram shall not alter the effect of 
any inherited language-defined subprogram. 
Implementation Permissions
The implementation may restrict the replacement of 
language-defined compilation units. The implementation may restrict children 
of language-defined library units (other than Standard). 
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe