Metadata-Version: 2.1
Name: multihypergraph
Version: 0.0.1
Summary: A simple python package for graph theory that supports multi-edges, hyper-edges, looped-edges and every other combination of these.
Home-page: https://github.com/vaibhavkarve/multihypergraph
Author: Vaibhav Karve
Author-email: vaibhavskarve@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown

# multihypergraph

##Description
A simple python package for graph theory that supports multi-edges, hyper-edges, looped-edges and every other combination of these. This package is an exercise in defining statically-typed, functional implementations of graphs that have the following features:

  - Each vertex of the graph is a characted. For example `'ab,bc,ac'"` is a triangle graph with vertices `{'a', 'b', 'c'}`.
  - Multi-edges are allowed. `'ab,ab'` is a valid graph.
  - Hyper-edges are allowed. `'abc'` is a valid graph.
  - Self-loops are allowed. `'aa'` is a valid graph.
  - Collapsed edges are allowed. `'aab'` is a valid graph

Check out the wikipedia entries for [Hypergraph](https://en.wikipedia.org/wiki/Hypergraph) and [Multigraph](https://en.wikipedia.org/wiki/Multigraph). Think of this package as happy marriage between the two.

## Installation
> pip install multihypergraph

## Features
  - Almost all the code is functional.
  - Mutability of data types is never used.
  - All types are explicitly mentioned using static-typing (and checked courtesy `mypy`).
  - The above mentioned feature makes it easier to reason mathematically about the code.
  - The emphasis is on mathematical understanding and soundness rather than algorithmic efficiency.
  - The top-level scripts are divided into `objects/` and `morphisms/` to emphasize the category-theoretic structure of multihypergraphs.
  - Functional programming allows us to write easy-to-decipher tests using `pytest`.


