# OrLink

The **OrLink** is a type of UnorderedLink implying a boolean-logic disjunction of its outgoing set. The SequentialOrLink is an ordered analog, and is useful for specifying sequences of events, such as behavior trees.

To specify a menu of choices, use the ChoiceLink instead. A choice of variable types can be specified with the TypeChoice link.

To specify computations that happen in simultaneously, use the ThreadJoinLink and ParallelLink.

In PLN, the OrLink asserts a boolean-logic disjunction of propositions. OrLink can operate over predicates or concepts, but not between concepts and predicates.

The OrLink can sometimes be problematic for data representation. Because all links are immutable, terms can neither be added nor removed from the OrLink, once it is specified. Because the OrLink is an UnorderedLink, certain types of pattern matching can require n-factorial algorithms to explore all possible permutations. These issues are discussed in greater detail in the SetLink article.

## PLN Semantics

In PLN the OrLink semantics corresponds to a fuzzy set union (accounting for confidence).

OrLink <TV> A B

with

where denotes the function associated to the fuzzy connector , usually .

## Example

Initially the OrLink is defined over concepts, but is overloaded to predicates as well, in that case the union is applied over the corresponding satisfying sets.

For instance one may express the OrLink between predicates like

OrLink <TV> PredicateNode "hard_working" PredicateNode "fortunate"

or concepts

OrLink <TV> ConceptNode "hard_worker" ConceptNode "fortunate_people"