Introduction
What is GraphCalc?
GraphCalc is a Python library for computation in graph theory, hypergraph theory, combinatorics, discrete mathematics, and quantum information.
The library began as a graph-focused package for computing graph invariants and working with structured graph families. It has since expanded into a broader mathematical toolkit that supports multiple discrete domains while retaining a common design philosophy: mathematically transparent objects, reusable generators, invariant computation, property testing, and dataset-oriented experimentation.
Scope
GraphCalc is designed for users who want to work programmatically with mathematical structures arising in discrete mathematics and quantum information. Typical use cases include:
constructing graphs, hypergraphs, and related combinatorial objects
computing numerical invariants and structural properties
generating examples and datasets for experimentation
studying families of finite-dimensional quantum states, channels, and measurements
integrating solver-based routines into mathematical workflows
Package overview
The main public areas of the library are:
graphcalc.graphsTools for graphs, including core graph utilities, generators, invariant computation, polytope-related modules, and visualization helpers.
graphcalc.hypergraphsTools for hypergraph construction, basic operations, and hypergraph invariants.
graphcalc.quantumTools for finite-dimensional quantum states, channels, measurements, local channel actions, and dataset generation.
graphcalc.solversSolver-backed routines and optimization-oriented helpers used across the library.
graphcalc.utilsGeneral-purpose supporting utilities shared across workflows.
Design philosophy
GraphCalc emphasizes:
clear mathematical APIs
reusable computational building blocks
support for experimentation and conjecture-driven workflows
compatibility with standard Python scientific tooling
a balance between conceptual clarity and practical computation
Typical workflows
A typical GraphCalc workflow may involve one or more of the following:
generating a graph or hypergraph from a structured family
computing invariants or testing properties
exporting collections of computed data for later analysis
constructing and studying quantum states, channels, or measurements
using solver-backed routines to evaluate combinatorial quantities
Where to go next
For installation instructions, see Installation.
For a practical overview of common workflows, see Quickstart.
For a package-level reference to the public API, see API Reference.