抽象仕様として、抽象値の集合 A、初期値 a0∈A、各 m∈Op の事前条件 premA⊆A×Xm と写像 opmA:A×Xm→A×Ym が与えられているとする。データ型の実装 (Rep,Init,(opm))、表現不変条件 Inv、抽象化関数 α:Inv→A が次を満たすとする。
- (初期値)Init⊆Inv で、すべての r∈Init について α(r)=a0。
- (可換性)すべての m、r∈Inv、x∈Xm について、(α(r),x)∈premA かつ opm(r,x)=(r′,y) ならば、r′∈Inv かつ opmA(α(r),x)=(α(r′),y)。
操作の列 (m1,x1),…,(mN,xN) を、抽象仕様の側で a0 から順に実行した抽象値と結果を ai、yiA(opmiA(ai−1,xi)=(ai,yiA))とし、各段で事前条件 (ai−1,xi)∈premiA が成り立つとする。同じ列を実装の側で r0∈Init から順に実行した表現と結果を ri、yi(opmi(ri−1,xi)=(ri,yi))とする。このとき、すべての i について
ri∈Inv,α(ri)=ai,yi=yiA(i≥1)が成り立つ。すなわち、呼び出し側が観測する結果の列は、抽象仕様のものと一致する。