Man kann das auch einfach als Allquantoreinführung nach dem prädikatenlogischen Kalkül des natürlichen Schließens betrachten. Leider fehlen hier für beide Notationen die Symbole...
Bahnhof?
Ich finds so einleuchtender:
C++:
class Zonker { }; class Zoodle : public Zonker { }; // alle Zoodles sind Zonker class Zip : public Zoodle {} // alle Zips sind Zoodle
Zip * pzip = new Zip (); Zonker * pzonker = static_cast<Zonker *> (pzip); // wenn das hier klappt, sind alle Zips Zonker.