Apart of learning more about Reactive programming, I came across the term Transitive Closure which has roots in Mathematics. Below I set out to decompose the concept into smaller concepts to clarify understanding.

A *“set”* is a strict list of elements. For example, `set X`

can be a list of numbers `{1,2,3}`

. An element, or number in this case, is said to be a member of the `set X`

if it is found in `set X`

. The number `1`

has membership in `set X`

.

Let’s also define another `set Y`

to be `{4,5,6}`

.

2 elements can be paired together to represent a list. The numbers 1 and 2 is a list of 2 elements or a *pair*. In addition to defining what elements are included and how many elements are in the list, the *order* can be specified. We can order `1`

to be first and `2`

second, or we can order `2`

to be first and `1`

second. In Mathematics, this list usually is written via a *tuple*, more specifically a 2-tuple to specify that there are only 2 elements, by arranging the elements in a specific order within `"( )"`

*Parenthesis. *The tuple is a limited or finite ordered list able to contain an arbitrary number of elements. The lists described above can be written as two 2-tuples or *ordered pairs*; `(1,2)`

and `(2,1)`

.

Multiple ordered pairs can be grouped in a *relation *which represents elements within an ordered pair are related. In this example, the specific relation is a binary or 2-place relation. The word “binary” indicates or involves the quantity of two. This is typically found in Computer Science to mean the Binary numbers `0`

and `1`

; `On`

or `Off`

.

Here is a binary relation for the sets X and Y denoted by the letter `R`

.

`R = {(1,4), (1,5), (5,1)}`

“`1`

**is related to** `4`

“. “`1`

**is related to** `5`

“. “`5`

**is related to** `1`

“.

Notice there are only 3 ordered pairs in this binary relation. This is a subset of the Cartesian product of the `sets X and Y`

. The Cartesian product is a set of all combinations of all the elements in the sets. The full Cartesian products of `sets X and Y`

is

`X * Y = {1,2,3} * {4,5,6} = {(1,4), (1,5), (1,6), (2,4), (2,5), (2,6), (3,4), (3,5), (3,6)}`

Y * X = {4,5,6} * {1,2,3} = {(4,1), (4,2), (4,3), (5,1), (5,2), (5,3), (6,1), (6,2), (6,3)}

With the ordered pairs and binary relation defined, the word transitive can be explained. The transitive relation means by knowing the two relationships of some elements, a third relationship can be established. If we said *a* **is related to** *b* and *b* **is related to** *c*, then the relationship *a* **is related to** *c* can be established.

A more concrete example can be the following. John is friends with Jane. Jane is friends with Fred. There is a transitive relation between John and Friend since they both share the friend Jane in common.

The second word in Transitive Closure is Closure. In Mathematics, a set can be said to be closed or exhibit the Closure property when some operation or procedure done on a set only strictly outputs members already in the set. In the context of sets and binary relations, the relevant operation or procedure can be *finding the relations of elements in a set. *

Let’s now pull all of this together along with continuing with the previously defined `set X`

, `set Y`

, and the binary relation `R`

.

`set X = {1,2,3}`

set Y = {4,5,6}

R = {(1,4), (1,5), (5,1)}

We see “`1`

**is related to** `4`

“. “`1`

**is related to** `5`

“. “`5`

**is related to** `1`

“. Looking at the two relationships “`5`

**is related to** `1`

” and “`1`

**is related to** `4`

“, we can establish a new transitive relation “`5`

**is related to** `4`

“. No other transitive relations can be established. This new pair `(5,4)`

can be added to the ordered pairs in R. Since R is a strict set, we’d have to define a new set which includes the new ordered pair. The new set can be written as

`R' = {(1,4), (1,5), (5,1), (5,4)}`

.

Since no other ordered pairs are necessary to represent all the relations of the numbers in the original `R`

set, we have found the transitive closure of the binary relation `R`

.

The formal definition of a transitive closure is:

In mathematics, the transitive closure of a binary relation `R`

on a set `X`

is the smallest relation on `X`

that contains `R`

and is transitive. *Wikipedia*

This was an explanation of the concept Transitive Closure using underlying concepts.

For more resources, I found this video helpful in understanding Transitive Closures since it explains the concept further with a graph: Transitive Closure Video.

Let me know your thoughts or whether there are any inaccuracies in the explanation.