Circumscription is a rule of conjecture that allows you to jump to the conclusion that the objects you can show that posses a certain property, p, are in fact all the objects that posses that property.
Circumscription can also cope with default reasoning.
Suppose we know: bird(tweety)
: penguin(x) bird(x)
: penguin(x) flies(x)
and we wish to add the fact that typically, birds fly.
In circumscription this phrase would be stated as:
A bird will fly if it is not abnormal
and can thus be represented by:
: bird(x) abnormal(x) flies(x).
However, this is not sufficient
We cannot conclude
flies(tweety)
since we cannot prove
abnormal(tweety).
This is where we apply circumscription and, in this case,
we will assume that those things that are shown to be abnormal are the only things to be abnormal
Thus we can rewrite our default rule as:
: bird(x) flies(x) abnormal(x)
and add the following
: abnormal(x)
since there is nothing that cannot be shown to be abnormal.
If we now add the fact:
penguin(tweety)
Clearly we can prove
abnormal(tweety).
If we circumscribe abnormal now we would add the sentence,
a penguin (tweety) is the abnormal thing:
: abnormal(x) penguin(x).
Note the distinction between Default logic and circumscription:
Defaults are sentences in language itself not additional inference rules.