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.

Example usage:

```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.

## 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.

The InheritanceLink can be understood to be equivalent to an EvaluationLink for the predicate "be" (or is-a"). So, for example:

``` EvaluationLink
PredicateNode "be"
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

```WordNode "disestablishmentarianism"
```

should be taken as being equivalent to

```InheritanceLink
ConceptNode "disestablishmentarianism"
ConceptNode "DefinedLinguisticConcept-Word"
```

This can be, in turn, understood as

```EvaluationLink
ConceptNode "disestablishmentarianism"
ConceptNode "DefinedLinguisticConcept-Word"
```

which just says that "disestablishmentarianism" is a "DefinedLinguisticConcept-Word"; that is, its just a word.

Similarly, custom-defined link types have non-sugared equivalents in terms of EvaluationLinks and PredicateNodes.

There are, at this time, no PLN rules that convert these various forms into one-another.

## PLN Semantics

PLN will interpret

```  InheritanceLink
X
Y
```

as

```  OrLink
X
Y
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>
\$Z
GroundedPredicateNode "property-of"
\$Z
X
\$Z
${\displaystyle \operatorname {property-of} (Z,X)=P(Z|X)-P(Z)}$