package Equal5 is type Eq_Parent is tagged null record; function "=" (Left : Eq_Parent; Right : Eq_Parent) return Boolean; type Eq_Iface is interface; function "=" (Left : Eq_Iface; Right : Eq_Iface) return Boolean is abstract; procedure Op (Obj : Eq_Iface) is abstract; ----------------- -- Derivations -- ----------------- type Child_6 is new Eq_Parent and Eq_Iface with null record; procedure Op (Obj : Child_6); function Equals (Left : Child_6; Right : Child_6) return Boolean; function "=" (Left : Child_6; Right : Child_6) return Boolean renames Equals; -- Test end Equal5;