Работа с массивами как с множествами

Здесь представлены несколько функций на JavaScript для работы с массивами как с множествами: пересечение, уникализация элементов, декартово произведение, соответствия Галуа.
Как известно, конечные множества в программах можно представлять в виде массивов. Принципиальное отличие конечного множества от массива состоит в том, что оно содержит только различающиеся (уникальные элементы).
Бинарное отношение можно представить как двумерный массив, состоящий из двухэлементных одномерных массивов. В каждом таком двухэлементном массиве содержится пара элементов, находящихся в рассматриваемом отношении.

Ниже перечислены функции, коды которых приведены на данной странице:

Функции R1() и Rn() могут использоваться для определения соответствий Галуа между подмножествами множеств, элементы которых находятся в заданном бинарном отношении.
Например, пусть задано некоторое бинарное отношение R между множествами A и B (отношение задано в виде двумерного массива). Тогда замыкание Галуа подмножества X множества A есть множество (массив) CX, возвращаемое следующим выражением:
CX=Rn(Rn(X, R), R,1)

Ниже приводятся определения функций:

Пример 1. Вычисление декартового произведения двух массивов,содержащих буквы

a1= new Array("x","y","z")
a2= new Array("a","b","c","d")
// Декартово произведение:
a=DP(a1,a2)
Пример 2. Замыкание Галуа для бинарного отношения, заданного двумерным массивом arel, содержащим буквы
// Бинарное отношение:
arel=new Array()
arel[0]=new Array("x","a")
arel[1]=new Array("x","b")
arel[2]= new Array("y","c")
arel[3]=new Array("y","b")
arel[4]=new Array("y","d")
arel[5]=new Array("x","d")
arel[6]=new Array("z","a")
arel[7]=new Array("z","d")
// Подмножество :
ax=new Array("x","z")
// Замыкание Галуа:
a=Rn(Rn(ax,arel),arel,1)
Чтобы выполнить приведённые выше коды примеров и посмотреть результаты, щелкните на соответствующей кнопке