candidate-eliminate()
{
S=H中で最も特殊な仮説の集合;
G=H中で最も一般的な仮説集合;
for(each 事例 d in 事例集合D)
if(d が正事例) {
d と矛盾する仮説をGから取り除く
for(each dと矛盾する仮説 s in S) {
Sからsを取り除く
S=S∪「dと矛盾せず、G中により一般的な仮説が存在する、
s の最小一般化仮説の集合」
}
SからS中の他の仮説より一般的な仮説を削除する
}
else if(dが負事例) {
d と矛盾する仮説をSから取り除く
for(each dと矛盾する仮説 g in G) {
Gからgを取り除く
G=G∪「dと矛盾せず、S中により特殊な仮説が存在する、
g の最小特殊化仮説の集合」)
}
GからG中の他の仮説より特殊な仮説を削除する
}
}