Я так и объясняю, как разные вариации на одну тему.  Только процедурный тип - это не полиморфизм, а виртуализация. Полиморфизм - это протаскивание расширенных типов через указатель или параметр базового. (Принцип Барбары Лисков, или, как я люблю говорить студентам "принцип рыбы-селёдки").

Кстати, не знаю, Вы в курсе или нет - но в базовом Обероне Вирта не было связанных процедур. А использовались поля записей процедурного типа.