Fundamental Expression Types

Survey of Knowledge Base Content

  In this lesson we will focus on the fundamental expression types of CycL.  Generally speaking, fundamental expression types are the building blocks of language.  They are the things that you probably think of when you think of grammar.  In English we have nouns, adjectives, verbs, etc.  Here, we’re going to focus on the fundamental expression types in CycL, such as constants, functions, terms, predicates, quantifiers, etc.


  Constants can denote individuals, collections, or collections of collections.  #$GeorgeWBush, #$Sudan, and #$0-TheDigit are all constants that denote a specific individual.  #$Sudan denotes Sudan, the country in Africa .  #$0-TheDigit denotes zero, which is an individual that is a specific abstract object.

#$WorldLeader and #$Country are constants that denote collections.  #$WorldLeader, for example, denotes the collection of all world leaders.  #$Country does not denote a specific country, but rather the collection of all countries.

Collections of collections can be more confusing.  They denote all of the collections of all x.  For example, the members of the collection #$AutomobileTypeByBrand are all of the kinds of vehicles characterized by being of a certain brand.  The members are not the vehicles themselves, but they are kinds of vehicles.  So collections of collections don’t denote physical clusters or groups; instead they denote an abstract group whose members are distinguished by the value of a shared attribute.


  Functions take arguments and return results.  Consider the following examples.

#$PresidentFn takes a country as its argument and returns the name of a president as its result.  So, (#$PresidentFn #$Mexico) takes #$Mexico as its argument and returns Vicente Fox as its result.  Another way of saying this is that (#$PresidentFn #$Mexico) denotes Vicente Fox.

The function #$MotherFn does the obvious; it denotes the name of an animal’s biological mother.  We can build compound functional expressions by putting two functions together, as in (#$MotherFn (#$PresidentFn #$UnitedStates)).  When this lesson was written, this expression denoted Barbara Bush, who was the mother of the then current president of the United States.

The function #$GroupFn denotes not an individual, but a collection.  Thus, in this case, (#$GroupFn #$Person) denotes the very large collection of all groups (or collections) of people.  Note that members of these groups can overlap, thus the groups include Americans, smokers, plumbers, athletes, members of the 1992 Boston Red Sox, etc.

Terms Used to Relate: #$isa and #$genls

  #$isa is the most basic term in CycL. This term is used to say that something is part of a collection.  Everything belongs to at least one collection.

(#$isa #$GeorgeWBush #$WorldLeader) says that George Bush is a world leader.  It also says that George Bush is an individual in the collection of world leaders.  (#$isa #$Cat #$OrganismClassificationType) denotes a case of a collection of collections.  #$Cat does not refer to a specific cat, but to the collection of all cats.  This expression says that #$Cat is a member of the collection #$OrganismClassificationType.

The #$genls term is used to say that one collection is a sub-collection of another.  Thus, if instead of using #$isa above, we had said (#$genls #$Cat #$OrganismClassificationType) we would have been saying that every individual in the collection #$Cat is also in the collection #$OrganismClassificationType.  This is false, of course, since Tigger The Cat is not a type of organism classification.  The expression (#$genls #$Cat #$Carnivore) says that every cat is a carnivore.  Thus, if Tigger is an individual in the collection of all Cats, Tigger is also in the collection of all Carnivores.

Terms Used to Relate: #$typeGenls

  The relation #$typeGenls is difficult to understand.  In order to gain a better understanding of this term, let me translate the first example on the slide.  It says “every collection that is an Organism Classification Type is such that it has #$BiologicalLivingObject as a genls.”  In other words, #$OrganismClassificationType is a collection of collections whose members can be generalized from the members of #$BiologicalLivingObject.  Because this concept is difficult to understand, let me state this one more time in different words.  If we take all of the members of #$BiologicalLivingObject and generalize them into smaller collections such as #$Cat, #$Dog, etc., those collections could also be found as members in the collection of collections called #$OrganismClassificationType.

This relation is distinct from the relation in the previous example of #$Cat being a sub-collection of Carnivore.  In that case, Carnivore is a collection of individuals (with names like Tigger and Rover), and we grouped some of those individuals into a sub-collection that we called #$Cat.  In the current example, #$Tigger and #$Rover would be explicit members of #$BiologicalLivingObject, but not explicit members of #$OrganismClassificationType (whose members would have names like #$Cat and #$Dog).  However, because we know that Cat is an Organism Classification Type and members of collections of Organism Classification Types can be generalized from the members of Biological Living Objects, we can infer that any member of the collection Cat is also in the collection of all Biological Living Objects.

Terms Used to Relate: #$disjointWith

The term #$disjointWith is rather simple.  It means that nothing exists that is a member of both collections to which it’s referring.  Thus, the example on the slide says that nothing is both a fish and a mammal, or rather, no individual exists that is a member of the collection #$Fish and also a member of the collection #$Mammal.

Other Terms Used to Relate

There are many more terms used to denote relationships in CycL.  The relationships that the terms on this slide denote are obvious in how they are named.  Consider the first example.  #$biologicalRelatives relates two terms, in this case Jerry Lee Lewis and Jimmy Swaggart.  This example asserts that these two are biological relatives (as opposed to being related legally or in some other manner).

Notice that the relationships on the slide are between individuals, not collections of individuals.  The vast majority of relational terms in CycL are used to relate one individual to another individual.

Connecting Relational Terms: #$genlPreds and #$genlInverse

 CycL has terms that relate one relational term to another.  The two main terms for accomplishing this are #$genlPreds and #$genlInverse.

We have already discussed these two terms in previous lessons but let’s review them again here.  #$genlPreds is used to say that if something is true of the first term, then it will be true of the second term as well.  Refer to the examles on the slide.  The first example says that if a thing x is a geographical subregion of thing y, then thing x is also a physical part of thing y.  The second example says that if something is a physical part of thing y, it also temporally intersects (or exists at the same time as) thing y.  The last example says that if x is a father to y, then x is also a biological relative to y.

#$genlInverse is just like #$genlPreds, but you flip the terms.  Consider the first example under #$genlInverse on the slide.  This example says that if x is an event that causes y, then y starts after the start, or beginning, of x.  The second example says that if x is a father to y, then y is a biological relative to x.  Compare the meaning of this sentence to the meaning of the second example sentence for #$genlPreds.  Notice that the x and y changed places in the second half of the sentence.

Predicates for Well-formedness: #$arity and #$argxIsa

CycL has predicates that are used to describe syntactic and semantic conditions for writing well-formed sentences.  These are #$arity and #$argxisa.

#$arity denotes the number of arguments that a predicate must have -- the syntactic constraint.  Consider the example on the slide, (#$arity #$biologicalMother 2).  It says that any assertion using the predicate #$biologicalMother must include exactly two arguments (presumably the name of the mother and the name of that which is mothered).

The #$argxIsa predicate imposes semantic constraints.  It constrains the meanings of the terms that are legal arguments for that predicate. The first #$argxIsa example on the slide, (#$arg1Isa #$biologicalMother #$Animal), says that the first argument of a sentence that uses the predicate #$biologicalMother must be an animal.  Thus, the first argument cannot be a door or a car, etc.  The second example, (#$arg2Isa #$biologicalMother #$FemaleAnimal), says that the second argument in a sentence using #$biologicalMother must be a female animal.  Thus the sentence (#$biologicalMother #$Jim #$John) would be well-formed as far as the first argument is concerned, since Jim is an animal, but not as far as the second argument is concerned, since John is presumably not a female animal.

Logical Connectives: #$or

  Let’s now review some CycL logical connectives that we’ve seen in previous lessons.

The logical connective #$or relates two or more assertions in such a way that an expression which uses this connective is true if any (one or more) of the assertions are true.  Refer to the example on the slide.  Lets’ say that we want to hire Chris for an entry-level programming position.  If Chris fills any of the following qualifications, we’ll extend him an offer:
• is a college graduate
• is a computer programmer
• is a genius

Logical Connectives: #$and and #$not

The #$not and the #$and connectives in the example on this slide are used to say that it is not the case that the following assertions are both true.  Thus it is not true that ChrisX is both a male person and a female person.

Logical Connectives: #$implies

  The connective #$implies is used to say that if the first assertion is true, then the following assertion is true as well.  Notice that the second assertion in the example on the slide is preceded by the #$not connective, meaning that the opposite of what the assertion claims is true.  Therefore, this example says that if Chris is a male person, that implies that Chris is not a female person.

Quantifiers: #$forAll

Now let’s review some CycL quantifiers.

#$forAll is the universal quantifier.  When used with variables, this term allows you to say things like the example on the slide: For any ?COUNTRY and any ?PERSON, if that ?COUNTRY is a #$Superpower, then the ?PERSON who is the head of its government has the status of #$WorldLeader.

Quantifiers: #$thereExists

  #$thereExists is the existential quantifier.  When used with variables, this term allows you to say that something exists.  The example on this slide says that every vertebrate has a tongue as an anatomical part.  To be more literal in the translation, it says that for every animal, it follows from that animal being a vertebrate that it has a part that is a tongue and that part is one of its anatomical parts.


 This concludes the lesson on Fundamental Expression Types in CycL.