• Stars
    star
    612
  • Rank 73,289 (Top 2 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 7 years ago
  • Updated 23 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A framework for applied category theory in the Julia language

Catlab.jl Catlab.jl

Stable Docs Dev Docs Julia CI/CD Code Coverage DOI

Catlab.jl is a framework for applied and computational category theory, written in the Julia language. Catlab provides a programming library and interactive interface for applications of category theory to scientific and engineering fields. It emphasizes monoidal categories due to their wide applicability but can support any categorical structure that is formalizable as a generalized algebraic theory.

Getting started

The documentation contains several example notebooks, as well as partial API docs. However, we readily acknowledge that the documentation is not as well developed as it should be. Feel free to ask questions! Besides the GitHub issues, we have a #catlab.jl stream on the Julia Zulip (preferred) and also a #catlab channel on the Julia Slack (less preferred).

Contributing

Applied category theory is a young and growing field, and Catlab is too the subject of ongoing research and development. This means that there are lots of opportunities to do new and interesting things!

We welcome contributions to Catlab, regardless of your experience level with category theory or the Julia language. For more information, see the CONTRIBUTING file.

What is Catlab?

Catlab is, or will eventually be, the following things.

Programming library: First and foremost, Catlab provides data structures, algorithms, and serialization for applied category theory. Macros offer a convenient syntax for specifying categorical doctrines and type-safe symbolic manipulation systems. Wiring diagrams (aka string diagrams) are supported through specialized data structures and can be serialized to and from GraphML (an XML-based format) and JSON.

Interactive computing environment: Catlab can also be used interactively in Jupyter notebooks. Symbolic expressions are displayed using LaTeX and wiring diagrams are visualized using Compose.jl, Graphviz, or TikZ.

Computer algebra system: Catlab will serve as a computer algebra system for categorical algebra. Unlike most computer algebra systems, all expressions are typed using fragment of dependent type theory called generalized algebraic theories. We will implement core algorithms for solving word problems and reducing expressions to normal form with respect to several important doctrines, such as those of categories and of symmetric monoidal categories. For the computer algebra of classical abstract algebra, see AbstractAlgebra.jl and Nemo.jl.

What is Catlab not?

Catlab is not currently any of the following things, although we do not rule out that it could eventually evolve in these directions.

Automated theorem prover: Although there is some overlap between computer algebra and automated theorem proving, Catlab cannot be considered a theorem prover because it does not produce formal certificates of correctness (aka proofs).

Proof assistant: Likewise, Catlab is not a proof assistant because it does not produce formally verifiable proofs. Formal verification is not within scope of the project.

Graphical user interface: Catlab does not provide a wiring diagram editor or other graphical user interface. It is primarily a programming library, not a user-facing application. However, there is another project in the AlgebraicJulia ecosystem, Semagrams.jl which does provide graphical user interfaces for interacting with wiring diagrams, Petri nets, and the like.

More Repositories

1

Semagrams.jl

A graphical editor for graph-like structures
Scala
93
star
2

AlgebraicPetri.jl

Build Petri net models compositionally
Julia
72
star
3

CompTime.jl

Library for compile-time computing in julia
Julia
70
star
4

AlgebraicDynamics.jl

Building dynamical systems compositionally
Jupyter Notebook
66
star
5

StockFlow.jl

Julia
65
star
6

AlgebraicRelations.jl

Relational Algebra, now with more algebra!
Julia
48
star
7

Decapodes.jl

A framework for composing and simulating multiphysics systems
Julia
46
star
8

Petri.jl

A Petri net modeling framework for the Julia programming language
Julia
40
star
9

CombinatorialSpaces.jl

Simplicial sets and other combinatorial models of geometric spaces
Julia
28
star
10

AlgebraicRewriting.jl

Implementations of algebraic rewriting techniques like DPO, SPO, SqPO.
Julia
25
star
11

GATlab.jl

GATlab: a computer algebra system based on generalized algebraic theories (GATs)
Julia
24
star
12

ACSets.jl

ACSets: Algebraic databases as in-memory data structures
Julia
18
star
13

Structured-Epidemic-Modeling

Results and software for our paper on structured epidemic modeling
Jupyter Notebook
12
star
14

Kittenlab.jl

A simplified Catlab.jl for teaching
Jupyter Notebook
12
star
15

CSetAutomorphisms.jl

Automorphism groups for CSets - generalizing the nauty algorithm to a broad class of data structures
Julia
12
star
16

ModelExploration.jl

Leveraging AlgebraicJulia to provide an interface for scientists to explore spaces of models.
Julia
11
star
17

py-acsets

A Catlab-compatible implementation of acsets in python.
Python
10
star
18

Poly.jl

Polynomial functors and applications
Julia
9
star
19

RegNets.jl

Regulatory networks
Julia
8
star
20

DiagrammaticEquations.jl

Julia
8
star
21

StructuredDecompositions.jl

Structured decompositions!
Julia
7
star
22

AlgebraicControl.jl

Optimal control compositionally
Julia
7
star
23

CombinatorialChains.jl

Jupyter Notebook
7
star
24

GraphicalLinearAlgebra.jl

Theories of linear algebra and graphical linear algebra
Julia
7
star
25

ASKEM-demos

Jupyter Notebook
6
star
26

algebraicjulia.org

Landing page for AlgebraicJulia
JavaScript
6
star
27

CANMOD-2022

Materials for 2022 CANMOD Workshop on Compositional Methods for Health Modeling
HTML
6
star
28

AlgebraicOptimization.jl

Julia
6
star
29

AlgebraicInterfaces.jl

An interface package for AlgebraicJulia
Julia
5
star
30

intertypes

Rust
5
star
31

AlgebraicWorkflows.jl

Julia
4
star
32

ACT2023Tutorials

TeX
3
star
33

SyntacticModels.jl

Specifying models with syntax trees
Julia
3
star
34

CategoricalTensorNetworks.jl

Tensor networks from a categorical point of view
Julia
2
star
35

Dtries.jl

Directories in Julia
Julia
2
star
36

AssociatedTests.jl

Tests that follow directly after functions
Julia
2
star
37

DataMigrations.jl

Julia
2
star
38

AlgebraicABMs.jl

Stochastic graph rewriting for agent based modeling
Julia
2
star
39

quarto-website

A template for making a quarto website that deploys to Netlify
CSS
1
star
40

InterTypesTemplate.jl

a template for use of intertypes
Julia
1
star
41

ASKEM.jl

A library of curated AlgebraicJulia functionality for the ASKEM program
Julia
1
star
42

StatisticalTheories.jl

Statistical theories and models
Julia
1
star
43

StateCharts.jl

Julia
1
star
44

ts-acsets

An implementation of acsets in typescript
TypeScript
1
star
45

DECAPODES-Benchmarks

Benchmarks, results, and software for our paper on computational physics
Julia
1
star
46

AlgebraicTemplate.jl

A template repository for making a new AlgebraicJulia package.
Shell
1
star
47

acsets4j

InterTypes-compatible acsets for java
Java
1
star
48

pubs-database

A database of clean bibtex files
TeX
1
star
49

AlgebraicMetabolism.jl

Julia
1
star