Circumscription

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)

tex2html_wrap_inline7154: penguin(xtex2html_wrap_inline7156 bird(x)

tex2html_wrap_inline7154: penguin(xtex2html_wrap_inline7432flies(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:

tex2html_wrap_inline7154: bird(xtex2html_wrap_inline7472abnormal(xtex2html_wrap_inline7156 flies(x).

However, this is not sufficient

We cannot conclude

flies(tweety)

since we cannot prove

tex2html_wrap_inline7182abnormal(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:

tex2html_wrap_inline7154: bird(xtex2html_wrap_inline7472flies(xtex2html_wrap_inline7156 abnormal(x)

and add the following

tex2html_wrap_inline7154tex2html_wrap_inline7182abnormal(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:

tex2html_wrap_inline7154: abnormal(xtex2html_wrap_inline7156 penguin(x).

Note the distinction between Default logic and circumscription:

Defaults are sentences in language itself not additional inference rules.