Für eine Subtyp-Relation auf reguläre Typen soll das Ersetzbarkeits-Prinzip von Wegner und Zdonik gelten:
Eine Instanz eines Subtyps kann überall dort verwendet werden, wo eine Instanz des Supertyps erwartet wird.Um eine entsprechende Relation zu formulieren sind einige formale Schreibweisen und Begriffe notwendig.
Wenn ein Objekt im Zustand eine Anfrage
akzeptieren
kann und es sich anschließend im Zustand
befindet, läßt
sich dies schreiben als
Hierbei handelt es sich im Allgemeinen nicht um eine Funktion, da
das Objekt bei der Bearbeitung der Anfrage selbst Anfragen
an andere Objekte senden kann, wodurch der Zustandsübergang auf das
Objekt bezogen nichtdeterministisch erscheint.
Kann ein Objekt im Zustand eine Folge von Anfragen
verarbeiten und befindet es sich anschließend im Zustand
,
soll dies ausgedrückt werden durch
Definition 1: Das Protokoll eines Objektes im Zustand
ist gegeben durch die Menge von Folgen von Anfragen, die
es bedienen kann:
Eine weitere wichtige Menge ist die der im Zustand zulässigen
Anfragen.
Definition 2:
.
Jetzt können wir die Menge der Fehlersituationen eines Protokolls definieren.
Definition 3:
Wollen wir nun ein Objekt im Zustand für ein Objekt im Zustand
einsetzen, muss sicher gelten, dass
gilt, also alle Folgen von Anfragen, die
akzeptiert, auch
von
akzeptiert werden. Für die Fehlersituationen muss sicher
das Umgekehrte gelten, d. h. ein Fehler
der für
auftritt muss auch für
möglich sein oder aber
muss
außerhalb des Protokolls von
liegen.
Definition 4: Die relativen Fehlersituationen eines Objektes
im Zustand bzgl. eines Objektes im Zustand
sind:
Damit lautet dann die Definition der Einsetzbarkeits-Relation
Definition 5: Ein Objekt im Zustand ist für ein
Objekt im Zustand
einsetzbar, geschrieben
, genau
dann, wenn gilt:
und
.
Es lässt sich zeigen, dass diese Einsetzbarkeits-Relation die Eigenschaften einer Halbordnung hat, also reflexiv und transitiv ist.
soll jetzt ein Subtyp von
sein, genau dann,
wenn gilt
. Für den regulären Typ
einer Variablen
gilt dann
, also ist
ein Subtyp von
.
Das Protokoll eines Objektes soll konform zum Protokoll
eines Objektes
heißen, wenn
ein Subtyp von
ist. Liegen die Protokolle der beiden Objekte als reguläre Typen vor,
gibt es einen Algorithmus um die Konformität zu testen.