# Connection-set algebra (CSA) library
A library for constructing connection matrices between two collections of
elements. Inspired by Mikael Djurfeldt's article from 2012 ([Neuroinformatics](https://doi.org/10.1007/s12021-012-9146-1)).
## Introduction
Connection-set algebra is a powerful algebra for describing connections between
two elements.
This library provides a syntax tree for modeling the set operations, as well as
a means to transform the operations into adjacency matrices.
## Installation
This is a library and not an executable.
Clone the repository, enter it and run `stack build` (requires [stack](http://haskellstack.org/)).
## Connection-set algebra (CSA)
Say that you have two nodes that connect to each other.
In a adjacency matrix this can be described as a full connection like so:
1 2
+ ———
1 | 1 1
2 | 1 1
In CSA this is simply an `AllToAll` connection.
Similarly a `OneToOne` connection describes the following adjacency matrix:
1 2
+ ———
1 | 1 0
2 | 0 1
And here is the algebra part: If we say `AllToAll - OneToOne` we get:
1 2
+ ———
1 | 0 1
2 | 1 0
## Contact
Jens Egholm