## The Hierarchy of Contexts in Cyc®

E-Mail Comments to: opencyc-doc@cyc.com
Copyright© 1996-2002 Cycorp. All rights reserved.

| Contexts in Cyc®
| What Is A Context?
| Accessible Assertions and Domain Assumptions in Contexts

Contexts are organized hierarchically; the predicate #$genlMt (for "base-Microtheory") is used to state that one context includes (has access to the contents of) another.

To link up two microtheories ?MT1 and ?MT2 in this way, you assert this to Cyc:

    (#$genlMt ?MT1 ?MT2)

A context ?MT1 has access to another ?MT2 if everything that is true in the accessed context ?MT2 is true in the accessing context ?MT1 as well. In other words, to say (#$genlMt #$HumanAilmentMt #$AilmentMt)--i.e., that the #$HumanAilmentMt has access to the #$AilmentMt as its base (or that the #$AilmentMt is the base microtheory of the #$HumanAilmentMt)--means that every assertion that is true in the #$AilmentMt is also true in the #$HumanAilmentMt.

Cyc's #$genlMt relation relates all contexts to two special contexts: one, called #$BaseKB, is the base microtheory of every other context in the system. Conversely the other extreme, called #$EverythingPSC (a "virtual" context used only in browsing around in Cyc), has every other context in the system as its base microtheory. The former, called the #$BaseKB, is the most general context in the system, and contains only information that will be true in every other context as well; as a result, only the most general, context-independent information belongs in the #$BaseKB.

The #$EverythingPSC, on the other hand, has every other context as a base; it is used to see the totality of information that has been entered about some unit in all contexts. Because it is used only for browsing, and not as a theory of some domain, assertions cannot be made in the #$EverythingPSC itself.

Cyc uses temporary Problem-Solving Contexts (PSCs) when it needs to combine information from various other contexts to solve a particular problem. A PSC has no built-in facts or IF-THEN rules of its own; it get all its assertions by "lifting" them from other microtheories which exist in Cyc® to solve the problem at hand. When Cyc® is finished working, the PSC is discarded.

Mathematically speaking, then, the microtheories in the Cyc Knowledge Base form a partially ordered set (also called a "poset" or just "ordered set") of contexts with #$genlMt as the ordering relation. This corresponds to a Directed Acyclic Graph (DAG), having a top node (#$EverythingPSC) above other contexts, and a bottom node (#$BaseKB) included in all others. This is not merely a tree structure because one context may have many "parents" and many "children" in the partially ordered set of contexts.

## Questions:

Questions about the structure of how different contexts (or Microtheories) relate to each other:

What is the special microtheory that's accessible from all other microtheories in Cyc?

What is the special "virtual" context that has access to all other contexts in Cyc?

What is the name of the predicate that relates two contexts, to indicate that the first context has access to all the assertions and Domain Assumptions available in the second context?

Mathematically, what is the structure of all these Microtheories connected by #$genlMt links? Is it a chain of Microtheories , a tree of Microtheories, or what?

For any two Mts ?MT1 and ?MT2 (these are only variable names), is it always true that either (#$genlMt ?MT1 ?MT2) or (#$genlMt MT2 MT1)?

For any three Mts, ?MT1, ?MT2, and ?MT3, if (#$genlMt ?MT1 ?MT2) AND (#$genlMt ?MT2 ?MT3), does this mean that (#$genlMt ?MT1 ?MT3)?

Which of these do you think is the Cyc constant for the concept of "basement": #$genlMt or #$BasementLevelOfAConstruction?

Suppose that (#$genlMt #$HumanAilmentMt #$AilmentMt). Does this mean that #$AilmentMt has access to all of the assertions and Domain Assumptions available in #$HumanAilmentAilmentMt?

Can there be a Mt that has no #$genlMt relation at all to any other Mt in Cyc, that is, a completely isolated Mt?

Can two different Mts have the #$genlMt relation to the same Mt? That is, is (#$genlMt ?MT1 ?MT3) AND (#$genlMt ?MT2 ?MT3) possible?)

Last Update: 3/29/2002