All Projects → AlgebraicJulia → Catlab.jl

AlgebraicJulia / Catlab.jl

Licence: mit
A framework for applied category theory in the Julia language

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Catlab.jl

bewl
A DSL for the internal language of a topos
Stars: ✭ 41 (-87.35%)
Mutual labels:  category-theory
preface
Preface is an opinionated library designed to facilitate the handling of recurring functional programming idioms in OCaml.
Stars: ✭ 116 (-64.2%)
Mutual labels:  category-theory
free-arrow
Implementation of the Free Arrow in Scala and other helpful tools for working with Arrows
Stars: ✭ 14 (-95.68%)
Mutual labels:  category-theory
cat
A categorical semantics library in Agda.
Stars: ✭ 16 (-95.06%)
Mutual labels:  category-theory
Semagrams.jl
A graphical editor for graph-like structures
Stars: ✭ 50 (-84.57%)
Mutual labels:  category-theory
ad-lens
Automatic Differentiation using Pseudo Lenses. Neat.
Stars: ✭ 16 (-95.06%)
Mutual labels:  category-theory
notes-milewski-ctfp-hs
Notes (in literate Haskell) from reading Category Theory for Programmers by Bartosz Milewski
Stars: ✭ 32 (-90.12%)
Mutual labels:  category-theory
CatsCheatSheet
This project is to contain a listing of common theorems in elementary category theory.
Stars: ✭ 61 (-81.17%)
Mutual labels:  category-theory
AlgebraicRelations.jl
Relational Algebra, now with more algebra!
Stars: ✭ 31 (-90.43%)
Mutual labels:  category-theory
cain
Category theory applied to functional programming (undergraduate project)
Stars: ✭ 27 (-91.67%)
Mutual labels:  category-theory
cat
A formalization of category theory in cubical Agda
Stars: ✭ 50 (-84.57%)
Mutual labels:  category-theory
C3T
C3T: Crash Course Category Theory - A friendly non-mathematician's approach to beginners of Category Theory. 🐱
Stars: ✭ 26 (-91.98%)
Mutual labels:  category-theory
category-parametric-talk
Talks on category-parametric programming.
Stars: ✭ 22 (-93.21%)
Mutual labels:  category-theory
SymmetryBookFormalization
Univalent mathematics in Agda
Stars: ✭ 117 (-63.89%)
Mutual labels:  category-theory
CAP project
CAP project -- Categories, Algorithms, and Programming
Stars: ✭ 18 (-94.44%)
Mutual labels:  category-theory
cubical-categories
Category theory formalized in cubical agda
Stars: ✭ 20 (-93.83%)
Mutual labels:  category-theory
haskerwaul
Category theory concepts in type classes and instances.
Stars: ✭ 16 (-95.06%)
Mutual labels:  category-theory
Zio Prelude
A lightweight, distinctly Scala take on functional abstractions, with tight ZIO integration
Stars: ✭ 267 (-17.59%)
Mutual labels:  category-theory
bow-lite
🏹 Bow Lite is a cross-platform library for Typed Functional Programming in Swift
Stars: ✭ 27 (-91.67%)
Mutual labels:  category-theory
mercator
Automatic typeclass-based abstraction over monad-like types
Stars: ✭ 54 (-83.33%)
Mutual labels:  category-theory

Catlab.jl Catlab.jl

Build Status Stable Docs Dev Docs 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

Catlab is experimental software and is missing many features, big and small. Moreover, the computational aspects of category theory are generally underdeveloped, both theoretically and practically. On the flip side, this means that there are lots of opportunities to do new and interesting things! Applied category theory is a young field and is likely to grow significantly.

We welcome contributions and are committed to supporting prospective contributors, regardless of experience level with category theory. If you are interested in contributing, please let us know.

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.j 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, it could be used as the backend for such an application.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].