# FiniteCategoriesGraphViz
The goal of this project is to represent small finite categories in order to make usual constructions automatically on them (e.g. (co)limits, (co)completion, adjunctions, etc.)
## Table of Contents
1. [General Info](#general-info)
2. [Technologies](#technologies)
3. [Installation](#installation)
4. [Collaboration](#collaboration)
5. [Examples](#examples)
## General Info
This package provides tools to export categories of the FiniteCategories using GraphViz. See the package [FiniteCategories](https://hackage.haskell.org/package/FiniteCategories) on hackage.
## Technologies
The project uses GraphViz for visualizing the categories created.
## Installation
To use the graphviz exports, you must first install graphviz (see [graphviz website](https://graphviz.org/download/)) and make sure that Graphviz folder is in the path (dot should be a callable program from your terminal, if you are on Windows see [this tutorial](https://stackoverflow.com/questions/44272416/how-to-add-a-folder-to-path-environment-variable-in-windows-10-with-screensho#44272417) and if you are on unix see [this tutorial]( https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path)).
Then you can call the functions `catToPdf`, `diagToPdf`, `diag2ToPdf`, `natToPdf`.
## Collaboration
All contributions are appreciated! Contact me by email for any information.
## Usage
To run all examples of the project, clone the repository and run in a terminal from the repository the following command :
```cabal test```
You can then find the graphviz output in the folder `OutputGraphViz/`.
## Examples
A category exported with graphviz looks like the following image :

A diagram on this category selecting two objects C and D is represented next :

A cone on this diagram follows, the apex of the cone is in green, its legs are in yellow and the diagram is in blue :

The limiting cone is represented below, it is the product of the two objects C and D.
