m≥1 とし、整数 b1<b2<⋯<bm と、出力 y0,y1,…,ym∈Y で yj−1=yj(j=1,…,m)を満たすものをとる。b0=−∞、bm+1=+∞ として、仕様の関数 g:Z→Y を
g(x)=yj(bj≤x<bj+1)で定める。関数 p:Z→Y について、p(x−1)=p(x) となる整数 x を p の切り替わり点という。テスト集合を T={bj−1, bj∣j=1,…,m} とする。
- p:Z→Y の切り替わり点が m 個以下で、すべての x∈T について p(x)=g(x) ならば、p=g である。
- 整数 c1,…,cm と出力 z0,…,zm による「x<c1 なら z0、そうでなく x<c2 なら z1、……、どれでもなければ zm」という形の実装は、cj と zj が何であっても切り替わり点が m 個以下である。したがって、境界の値のずれ(cj=bj)、不等号の等号の有無の誤り(x<bj を x≤bj と書く。これは cj=bj+1 にあたる)、出力の取り違え(zj=yj)は、いくつ重なっていても、T によってすべて検出される。
- 切り替わり点が m+1 個以上ある実装には、T に合格して g と異なるものがある。