# Basic MCF Slots

Here is a list of slots that are assumed to
exist in MCF. Since the definition of a slot has to preceed its first use, we
need a basic set of slots and terms to get the bootstrapping process started.

We will use the following conventions for ease of
readability.
- Predicate names/identifiers start with lower case alphabets.
- Category names will start with upper case alphabets.
- The names of
**builtin** categories will be the same as their
identifiers. This is only by convention. The names of predicates have to be
the same as their identifiers by definition.

### Builtin Predicates

- typeOf

The first argument is any object and the second object is a
category. This is the relation we use to say that a certain object is a Person
or an HTML document.
- superType

Both arguments are categories. This is the relation we use
to say that cats are animals.
- argumentOneType

The first argument is a predicate and second argument
is a category. argumentOneType(p, A) means that if we have p(g, ...), then
elementOf(g, A).
- argumentTwoType

Same as argumentOneType, except it applies to the
second argument.
- argumentThreeType

Same as argumentOneType, except it applies to the
third argument.
- argumentFourType

Same as argumentOneType, except it applies to the
fourth argument.
- genlSlots:

genlSlots(p1, p2) and p1(a, b) implies p2(a, b). So, if we
have genlSlots(subTopic, parent) and subTopic(Yahoo-Architecture, Yahoo-Arts),
then this implies parent(Yahoo-Architecture, Yahoo-Arts).
- parent

parent(A, B) means that there a directed arc/relation from A to
B. The inverse of parent is child so that parent(A, B) is semantically
equivalent to child(B, A).
- name

The first argument is any object and the second argument is a
string. Each object can have only one name.
- superLayer

Both the arguments are Layers. The second argument is the
layer which inherits everything from the first argument. superLayer(A, B)
means that everything in A goes into B as a default.

### Builtin Categories

- Category - #"Category" refers to the object whose elements are what are
what are typically refered to as types or categories or sets or collections.
Examples include people, slots, web pages, etc. As a convention, Categories
(aka sets, types, classes) have identifiers that end with "Category".
- Slot - The category of binary relations.
- SingleEntrySlot - The category of binary relations that has at most one
value. e.g., age, height, name.
- TernaryPredicate - The category of ternary relations, i.e. predicates
which take 3 arguments.
- QuaternaryPredicate - The category of quaternary relations, i.e.
predicates which take 4 arguments.
- Layer - The categories of layers.

### Other Reserved Terms

- BaseLayer

The BaseLayer is the bottom most layer and also the layer
which holds the assertions about layers (specifically, the superLayer
assertions).