A basic concept of probabilistic term logic, InheritanceLinks specify is-a relationships. In the OpenCog system, basic InheritanceLinks are used to specify both intensional (is-a) relationships, and also extensional (is-an-instance-of) relationships.
InheritanceLink monkey animal
specifies that a monkey is an animal.
Because InheritanceLinks mix both extensional and intensional relations, they are useful only for heuristic reasoning. InheritenceLinks will typically appear during natural language processing, as normal human discourse tends to mix up intensional and extensional characteristics, making proper interpretation somewhat ambiguous.
InheritanceLink is a subtype of OrderedLink.
Extensional vs Intensional
Philosophers of logic have extensively debated the relationship between extensional inheritance (inheritance between sets based on their members) and intensional inheritance (inheritance between entity-types based on their properties). We will often use the short notion ExtInhLink and IntInhLink, for example:
ExtInhLink <0.0> ConceptNode "whale" ConceptNode "fish"
IntInhLink <0.6> ConceptNode "whale" ConceptNode "fish"
indicating that the fish and whale sets have common properties but no common members.
As an EvaluationLink
The InheritanceLink can be understood to be equivalent to an EvaluationLink for the predicate "be" (or is-a"). So, for example:
EvaluationLink PredicateNode "be" ListLink ConceptNode "Socrates" ConceptNode "man"
is equivalent to:
InheritanceLink ConceptNode "Socrates" ConceptNode "man"
They are no PLN rules that perform this equivalence transformation (maybe it should be taken care of at the language processing level?).
As syntactic sugar
InheritanceLinks can also be used to express the un-sugared equivalent of a convenience node definition. Thus, for example, in linguistics, words, sentences and parses are the natural types used in discussing natural language. Thus, it is convenient to define new atoms types for this purpose: the WordNode, SentenceNode and ParseNode. These convenience types help keep natural-language hypergraphs smaller and simpler. The have an equivalent form in terms of an InheritanceLink.
So, for example
should be taken as being equivalent to
InheritanceLink ConceptNode "disestablishmentarianism" ConceptNode "DefinedLinguisticConcept-Word"
This can be, in turn, understood as
EvaluationLink PredicadeNode "be" ListLink ConceptNode "disestablishmentarianism" ConceptNode "DefinedLinguisticConcept-Word"
which just says that "disestablishmentarianism" is a "DefinedLinguisticConcept-Word"; that is, its just a word.
There are, at this time, no PLN rules that convert these various forms into one-another.
PLN will interpret
InheritanceLink X Y
Note that extensional inheritance is the same thing as subset, viz, extensional inheritance is equivalent to
SubsetLink X Y
Meanwhile, intensional inheritance
IntensionalInheritanceLink <TV> X Y
is equivalent to:
SubsetLink <TV> SatisfyingSetLink LambdaLink $Z EvaluationLink GroundedPredicateNode "property-of" ListLink $Z X SatisfyingSetLink LambdaLink $Z EvaluationLink GroundedPredicateNode "property-of" ListLink $Z Y
where the property-of predicate is a GroundedPredicateNode defined so that