Ada не поддерживает множественное наследование, за исключением «Интерфейсов» в Ada 2005, которые, однако, не имеют ассоциированного типа. Исходя из того, что вы написали, вы можете использовать эту концепцию, создав интерфейс чего-то3 (в любом случае он имеет нулевую запись, даже если вы не раскрываете это в своем примере).
Что-то действительно нужно наследовать от Abstract_something? Если нет, вы могли бы сделать
type something3 is interface;
type something4 is new something2 and something3 with private; -- or with null record etc
Исходя из моего опыта, стоит задуматься о том, каковы на самом деле свойства рассматриваемой проблемы (в отличие от свойств реализации): в случае наследования существуют ли отношения "есть-а" на протяжении всей иерархия? То есть, когда B и C наследуют от A, а D наследует от B и C, каждый ли B и C также является A? Является ли каждый D действительно B и C?
«Has-a» не поддается наследованию (хотя неосторожный может реализовать его таким образом).