Subprogram overloading
Two sub programs with the same name are distinguishable if their profile is different. The profile consists of the number of parameters, thier type and, if it is a function, the return type.
So long as the compiler can tell which sub program you requested by matching the profile of the call to the specifications of the sub programs you have supplied, it's happy; otherwise you'll get an ambiguous reference error.
procedure Insert(Item : Integer); -- Two procedures with the
procedure Insert(Item : Float); -- same name, but different.
-- profiles.
The procedures Put and Get in the package Ada.Text_IO are examples of overloaded subprograms.