next up previous
Next: Implementations: Truth Maintenance Systems Up: Non-Monotonic Reasoning Previous: Default reasoning


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(x) tex2html_wrap_inline7156 bird(x)

tex2html_wrap_inline7154: penguin(x) tex2html_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(x) tex2html_wrap_inline7472abnormal(x) tex2html_wrap_inline7156 flies(x).

However, this is not sufficient

We cannot conclude


since we cannot prove


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(x) tex2html_wrap_inline7472flies(x) tex2html_wrap_inline7156 abnormal(x)

and add the following

tex2html_wrap_inline7154: tex2html_wrap_inline7182abnormal(x)

since there is nothing that cannot be shown to be abnormal.

If we now add the fact:


Clearly we can prove


If we circumscribe abnormal now we would add the sentence,

a penguin (tweety) is the abnormal thing:

tex2html_wrap_inline7154: abnormal(x) tex2html_wrap_inline7156 penguin(x).

Note the distinction between Default logic and circumscription:

Defaults are sentences in language itself not additional inference rules.