Я думаю, что лучший способ ответить на ваши вопросы в обратном порядке:
Подтип, математически говоря, является непрерывным подмножеством своего родительского типа. Таким образом, если тип SIZES (1, 2, 3, 4, 5, 6, 7, 8) и вы определяете подтип MEDIUM как (4,5), первый элемент MEDIUM равен 4.
Пример:
Type Small_Natural is 0..16;
Subtype Small_Positive is Small_Natural'Succ(Small_Natural'First)..Small_Natural'Last;
Это определяет два небольших набора возможных значений, которые тесно связаны между собой: а именно, что положительными числами являются все натуральные числа, кроме нуля.
Я использовал эту форму, чтобы проиллюстрировать, что с несколькими изменениями текста у нас есть следующий пример:
Type Device is ( Not_Present, Power_Save, Read, Write );
Subtype Device_State is Device'Succ(Device'First)..Device'Last;
И здесь мы моделируем интуитивное представление о том, что устройство должно присутствовать, чтобы иметь состояние, но обратите внимание, что значения в подтипе являются [точно] значениями в типе, из которого они получены.
Это отвечает на ваш второй вопрос: Да, элемент перечисления будет иметь то же значение, что и его родительский тип.
Что касается первого, я полагаю, что начальная позиция фактически определяется реализацией (если нет, то я предполагаю, что LM по умолчанию принимает значение 0). Однако вы можете переопределить это и указать собственную нумерацию, единственное ограничение состоит в том, что элементы в начале перечисления оцениваются меньше значения, которое вы назначаете в настоящее время [IIRC].